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

调用Bitbucket Cloud API认证返回401,仅获取提交信息时失败

问题原因与解决方案

  • 核心错误:请求方法不匹配
    Bitbucket Cloud v2 API的提交列表查询接口仅支持GET请求,你代码中使用requests.post发起请求,该方法需要更高的写入类权限,且接口本身不接受POST请求,两类接口的认证校验逻辑不同,因此会出现可正常拉取仓库列表、但拉取提交信息报401的现象。
  • 潜在语法问题
    你粘贴的代码中,第一个请求的auth参数里username被意外拆分为两行的use和rname,若实际运行代码存在该问题也会引发认证错误,若你可正常拉取仓库列表则可忽略该点。
  • 补充权限校验
    若修改请求方法后仍报错,需确认你使用的App Password已勾选repository:read权限,拉取工作区仓库列表仅需要基础的工作区读权限,单仓库提交信息读取需要额外的仓库读权限。
  • 分页逻辑缺陷
    原代码的while循环仅判断了分页标记next,但未发起拉取下一页数据的请求,会导致死循环,修正代码中已补充对应逻辑。

修正后核心代码片段

import requests
baseUrlv2 = "https://bitbucket.org/api/2.0"
role = "contributor"
username = {bitbucket_username}
password = {bitbucket_app_password}

r = requests.get("{base}/repositories/{workspace}?role={role}".format(base=baseUrlv2, role=role),
    auth=(username, password))

repos = r.json() 

while True:
    for repo in repos["values"]:
        commitLink = repo["links"]["commits"]["href"]
        repoSlug = repo["slug"]
        # 把POST请求改为GET请求即可解决401问题
        r = requests.get(commitLink, auth=(username,password))
        c = r.json()
    # 处理分页逻辑
    if 'next' not in repos:
        break
    repos = requests.get(repos['next'], auth=(username,password)).json()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:45:03