我正在使用 passportjs 库来验证用户进入应用程序。当用户使用passportjs成功认证时,通常会生成一个访问令牌。我正在尝试使用带有此访问令牌的 github API 创建一个分支,但没有取得多大成功,既使用 octokit 包装器,也使用超级代理发布。
我首先尝试以这种方式通过提供用户名和密码来验证 octokit。
let octokit=new Octokit({
auth:{
username:username,
password:password
}
});
然后我能够创建一个引用/分支而没有太多问题。但是,当我这样做但使用 github SSO 生成的访问令牌时,就像这样
passport.use(new GitHubStrategy({
clientID: keys.clientId,
clientSecret: keys.clientSecret,
callbackURL: "/auth/github/callback"
},
async (accessToken, refreshToken, profile, done) => {
let octokit = new Octokit(auth: `token ${accessToken}`);
const branchName = 'refs/heads/vue' + Math.random();
let masterHash = '123x123x1231232';
octokit.git.createRef({
owner: owner,
repo: 'gitDemo',
ref: branchName,
sha: masterHash
}).then((data) => {
console.log('data ', data);
});
}
我收到一个 HttpError: Not found 错误。我尝试的另一种方法是使用 superagent 直接发布到端点,将访问代码放在授权标头中。
const data={
ref:'refs/heads/FooBranch',
sha:masterHash
};
const res2=await request.post('https://api.github.com/repos/SomeOwner/SomeRepo/git/refs')
.set('Authorization','token '+accessToken)
.send(data);
但是,我仍然收到一个 HttpError :not found 问题。我很困惑我可能做错了什么。谢谢你,任何帮助将不胜感激!