composer提示token已过期怎么办_composer重新授权Github登录方法【方案】

10次阅读

composer提示Token过期本质是本地缓存的gitHub OAuth token失效,需重生成classic token并配置:访问https://www.php.cn/link/9c450eb90c31bc12f1691f235da5a0cc,勾选repo和read:packages,执行composer config -g github-oauth.github.com 。

composer提示token已过期怎么办_composer重新授权Github登录方法【方案】

Composer 提示 token has expired,本质是它缓存的 GitHub OAuth token 失效了,不是 Composer 本身出问题,而是你本地保存的 GitHub 访问凭据过期或被撤销。重新生成并配置 token 即可解决,不需要重装 Composer 或改全局配置。

为什么 GitHub token 会过期

GitHub 的 personal access token 默认没有过期时间,但以下情况会导致失效:

  • 你在 GitHub Settings → Developer settings → Personal access tokens 页面手动 revoke 了该 token
  • 你启用了 GitHub 的 fine-grained tokens,而这类 token 默认有有效期(如 30 天、90 天),且不支持 repo 全权限(Composer 需要读取私有仓库)
  • 你使用的是旧版 classic token,但 GitHub 已强制要求启用 2FA 后必须用新 token 替换(尤其 2023 年后)
  • Composer 缓存中残留了已失效的 token,且未自动更新

生成新的 classic token 并授权给 Composer

必须用 classic token(不是 fine-grained),且至少勾选 repo 权限(私有库)和 read:packages(如果用 GitHub Packages)。

  • 访问 https://www.php.cn/link/9c450eb90c31bc12f1691f235da5a0cc
  • Token description 填 composer-auth 方便识别
  • 勾选 repo(必需)、read:packages(按需)、delete:packages(按需)
  • 点击 Generate token,页面跳转后立即复制该 token(只显示一次!)
  • 执行命令写入 Composer 配置:
    composer config -g github-oauth.github.com 

验证 token 是否生效 & 排查常见失败点

运行 composer diagnose 看是否还有 token has expired 提示;若仍有问题,检查以下几点:

  • 确认 token 是 classic 类型:在 https://www.php.cn/link/f4380fd29ac34f2610014e8361d088fb 页面,有效 token 应显示 Classic 标签,而非 Fine-grained
  • 确认没有多余空格:执行 composer config -g github-oauth.github.com 查看当前值,前后不能有空格或换行
  • 确认域名拼写:必须是 github.com,不是 api.github.comwww.github.com
  • 私有仓库依赖若走 git@github.com: ssh 地址,不会走 token 验证——此时应检查 SSH key 是否添加到 GitHub,而非修 token

最易忽略的是用了 fine-grained token 还以为能替代 classic token。GitHub 明确不支持 fine-grained token 用于 Composer 的 github-oauth 配置,哪怕权限全开也不行。必须回退到 classic token 才能通过 Composer 认证。

text=ZqhQzanResources