gpt4 book ai didi

javascript - 从 Github 获取访问 token

转载 作者:行者123 更新时间:2023-11-30 20:53:02 25 4
gpt4 key购买 nike

我正在尝试使用 NodeJS 客户端从 Github 获取访问 token 。

const axios = require("axios");
var jwt = require("jsonwebtoken");

exports.openedPOST = function openedPOST(req, res) {

// generate jwt
const now = Math.round(Date.now() / 1000);
const payload = {
// issued at time
iat: now,
// expires in 10min
exp: now + 600,
// Github app id
iss: 6700
};

const token = jwt.sign(payload, cert, { algorithm: "RS256" });
console.log(token)

// auth to github
axios({
method: "get",
url: "https://api.github.com/app",
headers: {
Accept: "application/vnd.github.machine-man-preview+json",
Authorization: `Bearer ${token}`
}
})
.then(function(response) {
console.log(response.data);
})
.catch(function(error) {
console.warn("Unable to authenticate");
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
if (error.response) {
console.warn(`Status ${error.response.status}`);
console.warn(`${error.response.data.message}`);
}
});

res.status(200).end();

但这只会产生:
{
"message": "无法解码 JSON 网络 token ",
“documentation_url”:“https://developer.github.com/v3”
}

我已经在 https://jwt.io 验证了 token 有效负载符合预期。

最佳答案

我得到了这个工作。它主要基于您所拥有的,但有一些调整:

const axios = require("axios");
var fs = require('fs');
var jwt = require("jsonwebtoken");


exports.openedPOST = function openedPOST(req, res) {

// Private key contents
var private_key = fs.readFileSync("/path/to/pemfile.pem");
console.log("private_key: ", private_key);

// generate jwt
const now = Math.round(Date.now() / 1000);
const payload = {
// issued at time
iat : now,
// expires in 10min
exp : now + (10 * 60),
// Github app id
iss : 7233
};
console.log("payload: ", payload);

const token = jwt.sign(payload, private_key, { algorithm: 'RS256' })
console.log("Token: ", token)

// auth to github
var instance = axios({
method: "get",
url: "https://api.github.com/app",
headers: {
"Accept" : "application/vnd.github.machine-man-preview+json",
"Authorization" : `Bearer ${token}`
}
})
.then(function(response) {
console.log("Response: ",response.data);
})
.catch(function(error) {
console.warn("Unable to authenticate");
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
if (error.response) {
console.warn(`Status ${error.response.status}`);
console.warn(`${error.response.data.message}`);
}
});
};
exports.openedPOST();

我的主要问题是生成了 private_key 变量。另外,我将 600 更改为 (10 * 60) 因为我在调查的某个阶段遇到了不同的错误,但事实证明这不是问题所在。你那里有什么并不重要,所以我离开了。

我所做的另一项更改是将 axios 分配给一个变量。我对 node.js 比较陌生,所以不太确定为什么必须这样做,但怀疑它与 node.js 的同步/异步方面有关。

关于javascript - 从 Github 获取访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47967698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com