【问题标题】:Bitbucket API - Using access_tokenBitbucket API - 使用 access_token
【发布时间】:2021-11-21 15:11:55
【问题描述】:

我正在尝试获取我们公司 bitbucket 云的 repo 详细信息。 使用 API:

curl --request GET \
   --url 'https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}' \
   --header 'Authorization: Bearer <access_token>' \
   --header 'Accept: application/json'

来自 https://developer.atlassian.com/cloud/bitbucket/rest/api-group-repositories/#api-repositories-workspace-repo-slug-get

问题是我使用的每个密钥/令牌,我都会得到一个错误响应

{"type": "error", "error": {"message": "Access token expired."}}

我创建了一个 OAuth 2.0 密钥和密钥并尝试了它们。

--header 'Authorization: Bearer <KEY>'
--header 'Authorization: Bearer <SECRET>'

我也试过应用密码:

--header 'Authorization: Bearer <APP PASSWORD>'

也可以使用 SSH 密钥:

--header 'Authorization: Bearer <SSH KEY>'

但我得到了同样的错误。

谢谢

【问题讨论】:

    标签: bitbucket bitbucket-api


    【解决方案1】:

    我建议您完全省略“Authorization: Bearer”标头,而改用 app_password。事实上,Atlassian 建议使用应用密码,让您完全绕过access_token 的需要。

    请参阅身份验证方法文档页面的 App passwords 部分。

    这是它的工作原理。 (请注意,这些示例中没有 'Authorization: Bearer' 标头。)如果您的工作区是 companyname,您的用户名是 prospero ,并且您创建的应用密码是Atlassian 文档是 a1b2c3d4e5f6g7h8,那么您可以通过这种方式检索存储库列表。

    卷曲:

    curl -u prospero:a1b2c3d4e5f6g7h8 https://api.bitbucket.org/2.0/repositories/companyname
    

    Python:

    import requests
    import json
    
    r = requests.get('https://api.bitbucket.org/2.0/repositories/companyname', auth=('prospero', 'a1b2c3d4e5f6g7h8'))
    print(r.text)
    print(json.dumps(r.json(), indent=4))
    

    当然,您会想要使用更复杂的代码。这些只是简单的示例。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2012-01-27
      • 2016-07-22
      • 1970-01-01
      相关资源
      最近更新 更多