我有一个node.js应用程序,用于检查GitHub中的拉取请求。
我的一个脚本叫做genToken.js,它会生成一个安装访问令牌。另一个是prCheck.js,它使用genToken.js并将返回值赋值给变量,然后在函数retrievePR中使用该变量。这是功能:
var installationAccessToken = getToken.getInstallationAccessToken(function(res) {});
retrievePR: function(owner, repoName, state, callback) {
var github = new GitHubApi({
// optional
timeout: 5000,
host: 'api.github.com', // should be api.github.com for GitHub
protocol: 'https',
headers: {
"Accept" : "application/vnd.github.machine-man-preview+json",
"Authorization" : `Bearer ` + installationAccessToken
}
});
github.pullRequests.getAll({
owner: owner,
repo: repoName,
state: state
}, function(error, data){
callback(error, data);
});
}
这会返回以下错误:
ERROR: Unable to retrive pull requests from github: {"message":"Bad credentials","documentation_url":"https://developer.github.com/v3"}
如果我换线:
"Authorization" : `Bearer ` + installationAccessToken
有:
"Authorization" : `Bearer 1234`
其中1234
是手动生成的令牌,身份验证不会失败。
此外,如果我在console.log("installationAccessToken", installationAccessToken);
之后添加var installationAccessToken = getToken.getInstallationAccessToken(function(res) {});
,我会看到它输出installationAccessToken undefined
,这似乎发生在从genToken.js返回令牌之前。我认为这是某种同步问题。我不知道应该怎么处理它。
我做错了什么?
答案 0 :(得分:1)
您可以这样做:
retrievePR: function (owner, repoName, state, callback) {
getToken.getInstallationAccessToken((res) => {
var installationAccessToken = res //here check and assign token from res
var github = new GitHubApi({
// optional
timeout: 5000,
host: 'api.github.com', // should be api.github.com for GitHub
protocol: 'https',
headers: {
"Accept": "application/vnd.github.machine-man-preview+json",
"Authorization": `Bearer ` + installationAccessToken
}
});
github.pullRequests.getAll({
owner: owner,
repo: repoName,
state: state
}, function (error, data) {
callback(error, data);
});
});
}