编程笔记

lifelong learning & practice makes perfect

github Fine-grained personal access token 使用

使用之前创建的 github Fine-grained personal access token 修改仓库文件时报错403,发现用owner为个人用户名的token无法修改组织下仓库的文件.

这是我的用户名 yiGmMk ,这个用户下的仓库使用该token可以正常修改文件.

原因

创建token可以指定owner,如果需要修改组织下的仓库文件,需要创建一个owner为组织名的token.

如下,需创建owner为programnotes-cn的token才能修改该组织下的仓库文件:
配置

2种方案

github 个人的 Fine-grained Personal Access Token (细粒度令牌) 是可以修改组织(Organization)名下仓库文件的

方案一:使用 Fine-grained Token

推荐,更安全,但需要配置

  1. 资源所有者(Resource Owner)必须选对
    在创建 Token 时,“Resource owner” 不能选你自己(你的用户名),必须从下拉菜单中选择那个组织

    • 注意:如果你在下拉菜单里看不到那个组织,说明该组织禁止了非管理员创建细粒度 Token,或者你需要先在组织设置里开启。
  2. 组织管理员必须批准(Policy)
    很多组织默认是禁止细粒度 Token 访问私有仓库的。

    • 你需要联系组织的 Owner/Admin,进入 Organization Settings -> Third-party access -> Personal access tokens -> Settings
    • 确保选择了 “Allow access via fine-grained personal access tokens”。
  3. 权限设置(Permissions)
    Repository permissions 中,你必须显式开启:

    • Contents: Read and write (这是修改文件必须的)
    • Metadata: Read-only (默认必选)

方案二:使用 Personal Access Token (Classic)(最简单,成功率高)

如果方案一太麻烦(比如你不是管理员,且不想麻烦管理员去改设置),最直接的方法是换回 Classic Token

操作步骤:

  1. 进入 GitHub Settings -> Developer settings
  2. 选择 Personal access tokens -> Tokens (classic)
  3. 点击 Generate new token (classic)
  4. 关键步骤
    • Scopes (权限范围):勾选整个 repo 复选框(包含 repo:status, public_repo 等)。这将赋予该 Token 对你拥有权限的所有仓库(包括组织仓库)的读写权限。
    • SSO 授权 (如果组织开启了 SAML):Token 创建后,如果你的组织开启了单点登录 (SSO),你需要点击 Token 旁边的 “Configure SSO” 按钮,并对该组织进行授权(Authorize)。如果不做这一步,Token 即使有权限也无法读写组织资源。

欢迎关注我的其它发布渠道