Python脚本调用GitHub API遇403:如何生成正确访问令牌?
解决GitHub API 403错误:生成访问令牌并获取协作者列表
嘿,我来帮你搞定这个403错误的问题~ 首先得弄清楚为什么会出现这个错误:GitHub API对未授权的请求有严格的速率限制,而且私有仓库根本不接受未授权请求;就算是公共仓库,未授权请求的速率上限也极低,很容易触发403。所以咱们得用访问令牌做身份认证才行。
选个人访问令牌(PAT)还是OAuth令牌?
对于你自己写的Python脚本来说,个人访问令牌(PAT)就完全够用了。OAuth令牌主要是给第三方应用用的——比如你开发了一个工具,需要让其他GitHub用户授权你的工具访问他们的仓库,这时候才用OAuth。咱们自己用脚本访问自己的仓库,PAT操作起来更直接简单。
一步步生成个人访问令牌(PAT)
- 登录你的GitHub账号,点击右上角头像,选择「Settings」(设置)。
- 在左侧菜单栏拉到最底部,找到「Developer settings」(开发者设置)并点击。
- 选择「Personal access tokens」(个人访问令牌),然后点击「Tokens (classic)」(经典令牌)——经典令牌对个人脚本来说权限配置更直观。
- 点击「Generate new token」,再选「Generate new token (classic)」。
- 填写「Note」(备注),比如写“获取仓库协作者脚本”,方便你以后识别这个令牌的用途;然后设置过期时间,按需选择就行,比如30天或者自定义期限,更安全。
- 关键步骤:在「Scopes」(权限范围)里,勾选
repo权限——如果你的仓库是私有仓库,这个权限必须勾;如果是公共仓库,勾public_repo也可以,但repo权限覆盖更全,省得后续改脚本还要重新生成令牌。 - 滚动到页面底部,点击「Generate token」,一定要立刻复制生成的令牌! 关闭页面后就再也看不到了,丢了只能重新生成。
修改你的Python脚本,加入令牌认证
下面给你一个简单的示例脚本,你可以参考着修改自己的代码:
import requests # 替换成你自己的信息 OWNER = "你的GitHub用户名" REPO = "目标仓库的名称" TOKEN = "你刚生成的个人访问令牌" # GitHub API 获取协作者的接口地址 api_url = f"https://api.github.com/repos/{OWNER}/{REPO}/collaborators" # 请求头里带上令牌做认证 headers = { "Authorization": f"token {TOKEN}", "Accept": "application/vnd.github.v3+json" } response = requests.get(api_url, headers=headers) if response.status_code == 200: collaborators = response.json() print("仓库协作者列表:") for user in collaborators: print(f"- {user['login']}") else: print(f"请求失败,状态码:{response.status_code}") print("错误详情:", response.json())
小提示:安全存储令牌
千万别把令牌直接硬编码在脚本里!如果脚本上传到GitHub或者分享给别人,令牌就泄露了。建议用环境变量来存储:
import os TOKEN = os.getenv("GITHUB_TOKEN")
然后在运行脚本前设置环境变量(Windows用set GITHUB_TOKEN=你的令牌,Mac/Linux用export GITHUB_TOKEN=你的令牌)。
内容的提问来源于stack exchange,提问作者Dookoto_Sea
相关产品推荐
相关产品推荐

