gpt4 book ai didi

node.js - 为什么在使用 oauth 访问 token 进行身份验证的同时尝试发布到 github API 时会收到 404 响应?

转载 作者:行者123 更新时间:2023-12-05 07:23:48 25 4
gpt4 key购买 nike

我正在使用 passportjs 库对应用程序中的用户进行身份验证。当用户使用 passportjs 成功验证时,通常会生成访问 token 。我正在尝试使用带有此访问 token 的 github API 创建一个分支,但没有取得太大成功,既使用 octokit 包装器也使用 super-agent 发布。

我首先尝试通过以这种方式提供用户名和密码来验证 octokit。

let octokit=new Octokit({
auth:{
username:username,
password:password
}
});

然后我能够毫无问题地创建一个 ref/branch。但是,当我执行相同操作但使用 github SSO 生成的访问 token 时,就像这样

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 直接发布到端点,将访问代码放在授权 header 中。

  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 问题。我很困惑我可能做错了什么。谢谢您,我们将不胜感激!

最佳答案

我找到了答案 here

基本上您不使用 JSON 而是使用 FormData 发送数据。所以帖子应该看起来像这样(从链接复制):

let data = new FormData()
data.append('client_id', options.client_id)
data.append('client_secret', options.client_secret)
data.append('code', code)

fetch(`https://github.com/login/oauth/access_token`, {
method: 'POST',
body: data
})

关于node.js - 为什么在使用 oauth 访问 token 进行身份验证的同时尝试发布到 github API 时会收到 404 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55778644/

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