You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BitBucket API获取工作区仓库列表请求失败,求解决及Python方案

解决BitBucket免费版Basic认证获取仓库列表的问题

错误原因

你当前的Basic认证格式有误,BitBucket的Basic认证要求将你的BitBucket用户名和应用密码用冒号(:)拼接后进行Base64编码,再放到Authorization: Basic头部后,而非直接填入应用密码。

正确的curl命令

方式1:手动生成编码串

先在终端生成符合要求的Base64编码:

  • Linux/macOS终端:
echo -n "你的BitBucket用户名:你的应用密码" | base64
  • Windows PowerShell:
[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("你的BitBucket用户名:你的应用密码"))

再替换到curl命令中:

curl --request GET \
  --url 'https://api.bitbucket.org/2.0/repositories/{workspace}' \
  --header 'Authorization: Basic 生成的Base64编码串' \
  --header 'Accept: application/json'

方式2:让curl自动处理认证(更简便)

直接用--user参数,curl会自动生成正确的Authorization头部:

curl --request GET \
  --url 'https://api.bitbucket.org/2.0/repositories/{workspace}' \
  --user '你的BitBucket用户名:你的应用密码' \
  --header 'Accept: application/json'

Python实现方式

使用requests库完成请求,核心是传入用户名和应用密码的认证组合:

import requests

# 替换为你的信息
workspace = "你的工作区名称"
username = "你的BitBucket用户名"
app_password = "你的应用密码"

url = f"https://api.bitbucket.org/2.0/repositories/{workspace}"
response = requests.get(url, auth=(username, app_password), headers={"Accept": "application/json"})

if response.status_code == 200:
    repo_list = response.json().get("values", [])
    for repo in repo_list:
        print(f"仓库名:{repo['name']},仓库地址:{repo['links']['html']['href']}")
else:
    print(f"请求失败,状态码:{response.status_code},错误信息:{response.text}")

额外注意

创建应用密码时,必须勾选Repositories分类下的Read权限,否则会出现权限不足的错误。

内容的提问来源于stack exchange,提问作者devopsengineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:26:26