github、gitlab、bitbucket私有仓库必须用token认证:github用pat配github-oauth,gitlab分gitlab.com(gitlab-oauth)和自建实例(gitlab-token+gitlab-domains),bitbucket仅支持app password配bitbucket-oauth,均禁用密码及http basic auth。

必须用 Token,不能再输账号密码 —— GitHub 自 2021 年 8 月起已彻底停用密码认证,GitLab、Bitbucket 等平台也陆续跟进。Composer 在拉取私有仓库时若还提示输入用户名/密码,说明你正踩在过期认证方式的坑上。
GitHub 私有仓库:配置 github-oauth 全局凭证
GitHub 要求使用 Personal Access Token(PAT),且权限至少为 repo(public_repo 不够,无法访问私有库)。
- 生成 Token:GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token,勾选
repo,不勾选admin:org或delete_repo等高危权限 - 写入 Composer 配置:
composer config --global github-oauth.github.com <your-token-here></your-token-here>,该命令会把 Token 存进~/.composer/auth.json的github-oauth字段下 - 确保
composer.json中仓库 URL 是 HTTPS 格式,例如:"url": "https://github.com/your-org/private-package.git",且"type": "vcs" - 别把 Token 直接塞进
composer.json或auth.json并提交到 Git —— 它等同于你的账户密码
GitLab 私有仓库:区分 gitlab.com 和自建实例
GitLab 分两种场景:官方 gitlab.com 用 gitlab-oauth;自建实例(如 git.papamk.com)必须用 gitlab-token + gitlab-domains。
基于官方 GMGN API 的代币分析工具。通过合约地址查询代币在 SOL/BSC/Base 链上的准确市场数据、安全检测、KOL 分析、开发者分析和 AI 智能分析(叙事/筹码/老鼠仓/机器人)。支持自动识别链。
- 对
gitlab.com:运行composer config --global gitlab-oauth.gitlab.com <your-token></your-token> - 对自建 GitLab(如
git.papamk.com):手动编辑~/.composer/auth.json,加入:{ "gitlab-token": { "git.papamk.com": "<your-private-token>" }, "gitlab-domains": ["git.papamk.com"] }</your-private-token> - Token 来源:GitLab 用户设置 → Access Tokens → 创建,权限选
read_repository即可,不要开api或sudo - URL 必须用 HTTPS,且不能带用户名前缀(如
https://user:token@git.papamk.com/...是反模式,易泄露)
Bitbucket 私有仓库:只能用 App Password,不是账号密码
Bitbucket 已停用所有基于账号密码的 API 认证,必须用「App Password」,且需显式绑定权限。
- 生成 App Password:Bitbucket 设置 → App passwords → Create app password,勾选
account:read和repository:read - 配置方式唯一:写入
~/.composer/auth.json的bitbucket-oauth字段,格式为:{ "bitbucket-oauth": { "bitbucket.org": { "consumer-key": "<app-password>", "consumer-secret": "" } } }</app-password>注意:这里consumer-secret留空即可,Bitbucket 当前不校验它 - 不要尝试
http-basic.bitbucket.org—— Bitbucket 不接受基础认证(HTTP Basic Auth) - URL 必须是
https://bitbucket.org/username/repo.git,SSH 地址不走 OAuth 流程
验证失败时最常忽略的三个点
即使 Token 正确、配置完整,仍可能失败——问题往往出在缓存、域名拼写或分支名推断上。
- 执行
composer clear-cache后再重试,Composer 会缓存失败的认证响应,不清缓存会一直卡在旧错误里 - 检查
auth.json中的域名是否完全匹配仓库 URL 域名(gitlab.example.com≠example.com,大小写也不敏感但路径不能多斜杠) - 私有包的
composer.json中name字段必须与require中声明的完全一致(如"require": {"myorg/mylib": "dev-main"},则包内"name": "myorg/mylib"不可少,也不能多空格或大小写错)










