我正在开发一个项目,让用户生成个人访问令牌是没有意义的。用户犯错的空间太大,因为他们必须选择正确的权限并手动复制粘贴。
我更喜欢通过 Github 应用程序进行身份验证。有关于如何执行此操作的文档,并且我已经验证它们确实有效:https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generate- a-github-app 的用户访问令牌#使用 web 应用程序流程生成用户访问令牌
本质上,您将用户发送到 https://github.com/login/oauth/authorize?client_id=
code
查询参数,您可以使用正文向 https://github.com/login/oauth/access_token 发出发布请求
{
"client_id": "fohgljbgkjsfbglfghdif",
"client_secret": "sd,gjhralighrlgugfiljdgkdfgdifydfighidsds",
"code": "dgusifughodshgodlsbvjdbv"
}
我已手动验证其有效并返回
access_token=ghu_sfiuhdsuighfdisbgsdgdhsdshjsdfshdjf&expires_in=28800&refresh_token=ghr_fhiugigudsgisugdigusdig&refresh_token_expires_in=15724800&scope=&token_type=bearer
回想一下,我最初的目标是通过此端点添加 ssh 密钥https://docs.github.com/en/rest/users/keys?apiVersion=2022-11-28#create-a-public-ssh-key -对于经过身份验证的用户
使用上述令牌,我收到以下响应:
/tmp % curl -L -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ghu_sfiuhdsuighfdisbgsdgdhsdshjsdfshdjf" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/user/keys -d '{"title":"ssh-rsa AAAAB3NzaC1yc2EAAA","key":"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234"}'
{
"message": "Resource not accessible by integration",
"documentation_url": "https://docs.github.com/rest/users/keys#create-a-public-ssh-key-for-the-authenticated-user"
}
当我用谷歌搜索此错误时,问题似乎与令牌权限有关。我控制着 Github 应用程序,所以这看起来很容易补救,但密钥几乎肯定有
write:public_key
范围,这是文档唯一需要的。那我错过了什么?
这个问题并不能解决我的问题,因为它是在 Github 更改一般令牌权限和相关 api 之前创建和回答的 如何通过 GitHub 的 v3 API 添加 ssh-keys?
您可以尝试在通话中添加以下标头吗?
'x-accepted-github-permissions': 'actions=read',