Composer 要求输入 GitHub Token 是因 GitHub 自2021年8月起弃用密码认证,未认证访问API会触发限流或拒绝,需配置 Personal Access Token 并通过 composer config -g github-oauth.github.com 设置。

为什么 Composer 会突然要你输 GitHub Token
因为 GitHub 自 2021 年 8 月起彻底弃用密码认证,而 Composer 在访问私有仓库、或高频访问公开仓库(如安装依赖时触发限流)时,会默认走 GitHub API。没 Token 就会被拒绝,提示 Could not fetch https://api.github.com/... 或直接卡在 Token input required 交互界面。
这不是 Composer 故意为难你,而是 GitHub 强制要求——哪怕你只装一个公开包,只要 Composer 走了 API(比如查 package 的最新版本、下载 zip 包链接),就可能撞上限流阈值(未认证用户每小时 60 次)。
怎么生成并配置 GitHub Personal Access Token
登录 GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token → 勾选 repo(必须)、read:packages、delete:packages(如果用 GitHub Packages)→ 生成后立即复制保存(页面关闭后无法再查看)。
然后执行这条命令把 Token 存进 Composer 全局配置:
composer config -g github-oauth.github.com
注意:github.com 是域名,不是用户名;Token 必须是 classic 类型(Fine-grained token 不支持 OAuth 配置方式);别漏掉 -g,否则只对当前项目生效。
遇到「Token input required」卡住怎么办
这是 Composer 在交互式等待输入,但 CI/CD 环境或某些终端(如 Windows Git Bash)可能不响应 stdin。此时不能靠回车跳过,必须提前配置好。
- CI 场景(GitHub Actions、GitLab CI):用
COMPOSER_AUTH环境变量传入 JSON 字符串,格式为{"github-oauth": {"github.com": "xxx"}} - 本地误触发:Ctrl+C 中断后,删掉项目根目录下的
auth.json(如有),再运行composer config -g github-oauth.github.com ... - 验证是否生效:运行
composer config -g github-oauth.github.com,应输出你的 Token(非明文显示,但不会报错)
Token 泄露风险和最小权限原则
别把 Token 写进 composer.json 或提交到 Git。它等同于你的 GitHub 账号密码。
如果你只需要读取公开包,其实只需 public_repo 权限;但多数项目依赖私有 repo 或 GitHub Actions 触发构建,所以 repo 更稳妥。千万别勾选 admin:org 或 delete_repo 这类高危权限。
Token 一旦泄露,立刻去 GitHub 页面 revoke;建议定期轮换(比如每 90 天),并在多个项目间用不同 Token 隔离权限范围。










