使用Repository Access Token从Bitbucket私有仓库获取文件遇权限/令牌错误
问题描述
尝试为持续部署(CD)方案从Bitbucket仓库获取master分支下的原始VERSION文件,已创建拥有「Repository: Read」权限的Repository Access Token,但调用API时遇到错误:
- 使用curl请求:
返回错误:curl https://api.bitbucket.org/2.0/repositories/tests/sourcerepo/src/master/VERSION -H "Authorization: Bearer $TOKEN" -H "Accept: application/json"{"type":"error","error":{"message":"You may not have access to this repository or it no longer exists in this workspace. If you think this repository exists and you have access, make sure you are authenticated."}} - 在Postman中用相同URL+Bearer令牌授权,返回错误:
{ "type": "error", "error": { "message": "Token is invalid or not supported for this endpoint." } }
无法使用用户名密码进行操作。
解决方案
1. 修正认证方式:改用Basic Auth而非Bearer Token
Bitbucket的Repository Access Token不支持Bearer认证,必须通过Basic Auth传递:
- 修正后的curl命令:
其中curl -u x-token-auth:$TOKEN https://api.bitbucket.org/2.0/repositories/tests/sourcerepo/src/master/VERSIONx-token-auth是固定用户名占位符,$TOKEN替换为你的仓库访问令牌。 - Postman配置:选择「Basic Auth」认证类型,用户名填
x-token-auth,密码填你的令牌值。
2. 验证令牌权限与关联关系
- 确认创建令牌时已指定目标仓库(全局令牌可能无法访问特定仓库),且「Repository: Read」权限已勾选。
- 检查令牌是否属于目标仓库所在的工作区。
3. 核对仓库路径正确性
确保URL中的tests是工作区的ID(不是显示名称),sourcerepo是仓库的slug(仓库名小写、空格替换为横杠后的格式)。
4. 调整请求头(可选)
如果仅需获取文件原始内容,无需添加Accept: application/json头;若要获取文件元数据(如大小、修改时间),保留该头即可。
内容的提问来源于stack exchange,提问作者BUCKSHOT
相关产品推荐
相关产品推荐

