必须用composer config bitbucket-oauth.bitbucket.org配app password,因composer 2+已彻底移除http-basic.bitbucket.org支持,仅识别该字段并强制校验域名、要求app password格式、自动写入权限600的auth.json。

必须用 composer config bitbucket-oauth.bitbucket.org 配 App Password,其他方式在 Composer 2+ 中全部失效。
为什么 http-basic 和手动写 auth.json 不行
Composer 2+ 彻底移除了 http-basic.bitbucket.org 支持,也不再识别旧版 OAuth consumer。它只解析 bitbucket-oauth.bitbucket.org 这一个字段,并且内部强制做三件事:校验域名是否严格等于 bitbucket.org(不接受 www.bitbucket.org、api.bitbucket.org 或带 https:// 前缀)、要求凭据是 Bitbucket App Password 格式、自动写入 ~/.composer/auth.json 并设权限为 600。手写 auth.json 极易出错——字段名错位、权限不是 600、域名多写了端口或路径,都会导致认证被静默跳过。
composer config bitbucket-oauth.bitbucket.org 怎么执行才有效
命令必须满足四个硬性条件:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 域名只能写
bitbucket.org,不能加https://、不能写api.bitbucket.org - App Password 必须由你本人的 Bitbucket 账号生成(团队账号不行),且至少勾选
Repositories: Read - 密码要一次性复制完整——Bitbucket 只显示一次明文,关掉页面就再也看不到
- 执行后验证是否生效:
composer config --auth --list | grep bitbucket应该输出非空结果
composer.json 里仓库声明的三个致命细节
即使 auth.json 配对了,只要 composer.json 漏掉任意一条,Composer 就当公开包处理,完全不触发认证:
-
"type": "vcs"必须显式写出,不能留空、不能写成"git"或"package" -
"url"必须是完整 Git 克隆地址,以.git结尾,例如"https://bitbucket.org/vendor/package.git";填网页地址或漏掉.git后缀会直接 404 - require 的包名(如
"vendor/package")必须和私有仓库中composer.json的name字段逐字符一致,包括大小写
私有包拉不到?先确认是否进了认证流程
常见错误现象是报 Could not fetch https://api.bitbucket.org/2.0/repositories/... 或直接 403,这不是网络问题,而是根本没走认证——90% 是因为 repositories 数组顺序不对或没禁用默认源。如果你的项目同时用了私有包和公网包,必须把私有源放在 repositories 数组首位,并显式加上 {"packagist.org": false}。否则 Composer 永远先查公网,你的私有包连认证步骤都进不去。










