如何使用令牌操纵Bitbucket存储库?

时间:2014-07-25 22:15:57

标签: git oauth mercurial bitbucket

我按照此文档从bitbucket获取令牌值和令牌秘密:
https://confluence.atlassian.com/display/BITBUCKET/OAuth+on+Bitbucket

之后,我想通过使用该令牌来推/拉到给定的仓库。

在Github我可以像这样使用令牌: https://help.github.com/articles/git-automation-with-oauth-tokens#step-2-clone-a-repository

我的问题是如何在bitbucket(mercurial / git)上使用这种http授权?

5 个答案:

答案 0 :(得分:23)

我使用了我在Bitbucket Cpanel下设置的应用密码 - >访问管理(侧栏) - >应用密码。在我这样做之后,我使用我的用户名和新的应用密码克隆了回购,如下所示:

https://[your_user_name]:[app_password]@bitbucket.org/[your_user_name]/[repo_name].git

答案 1 :(得分:9)

首先:只能使用OAuth 2令牌来克隆回购

虽然此页面不清楚,但我发现有人尝试使用OAuth 1访问令牌。不幸的是,Git和Mercurial不支持OAuth 1,因此不可能以这种方式克隆回购。

这是因为OAuth 1要求对请求进行唯一签名。令牌本身只是git和hg不支持的加密签名过程的输入变量之一。

现在我们确实最近添加了对OAuth 2的支持,尽管它的名称是OAuth 2,但它是一个非常不同的协议,不包括加密签名。因此,OAuth 2令牌可用于克隆https。

以下是我创建新的OAuth 2访问/不记名令牌并使用它来克隆我的私人存储库的转储:

declare @var1 datetime
declare @var2 datetime          

set @var1 = '2015-07-14 13:31:43.797'
set @var2 = '2015-07-14 13:31:43.797'

select 
    'Reefer' = 
    case
        when DATEDIFF (hh,@var1,@var2) <= 6 and DATEDIFF (hh, @var1, @var2) > 0
          then 429.000
          else
            case 
                when (DATEDIFF (hh,@var1,@var2) % 6) > 0
                    then 429.00 * ((DATEDIFF (hh,@var1,@var2) / 6)+ 1) 
                else 'wut'
            end
    end 
from 
    container con
inner join 
    containerdetail cod on con.containernumber = cod.containernumber
left join 
    dea on dea.containernumber = con.containernumber
where 
    con.billofladingnumber = 'IMPJCP07140003'

现在请注意,OAuth 2令牌会在一小时后到期。之后他们将停止工作。根据您获取访问令牌的方式,您可能拥有刷新令牌。您可以使用此刷新令牌在尝试克隆之前立即发出新的访问令牌,以避免过期。

答案 2 :(得分:7)

BitBucket page mentions

  

我们最近推出了OAuth 2,并添加了将其用作HTTP Basic Auth credentials的功能。

     

使用访问令牌克隆存储库

     

由于加载项无法上传自己的SSH密钥进行克隆,因此可以将访问令牌用作基本HTTP身份验证凭据,以便通过HTTPS安全克隆。

git clone https://x-token-auth:{access_token}@bitbucket.org/user/repo.git
     

需要文字字符串x-token-auth作为用户名的替代。

     

我们的过程类似于GitHub,但略有不同:区别在于GitHub将实际令牌放在用户名字段中。

OAuth on Bitbucket Cloud的建议in the comments查看“nick graziano”的详情。

答案 3 :(得分:6)

使用令牌

操纵Bitbucket存储库
  1. 首先,在bitbucket帐户设置的访问管理部分创建“Oauth”。这给你一个“钥匙”和一个“秘密”。你做到了这一点。

  2. 现在使用这些Key和Secret,你会问Bitbucket一个令牌。在我的情况下,我向https://bitbucket.org/site/oauth2/access_token发出了http请求。我可以用Curl或像这样的Ajax库来做到这一点:

    curl -X POST -u "yourKeyHere:yourSecretHere"  https://bitbucket.org/site/oauth2/access_token -d  grant_type=client_credentials
    

    或者,我的http请求是这样的(在节点中使用superagent),我的Content-Type设置为application/x-www-form-urlencoded你可以使用postman:

    request.post("https://yourKeyHere:yourSecretHere@bitbucket.org/site/oauth2/      access_token").send('grant_type=client_credentials');`
    

    结果如下:

    {
       "access_token": "blah blah blah HXAhrfr8YeIqGTpkyFio=",
       "scopes": "pipeline snippet issue pullrequest project team account",
       "expires_in": 3600,
       "refresh_token": "hsadgsadvkQ",
       "token_type": "bearer"
    }
    
  3. 现在您已拥有“access_token”,请使用它来克隆私人仓库。但你的回购的网址应该是这样的(保持括号围绕代币):

    https://x-token-auth:{tokenHere}@bitbucket.org/yourRepoOwnerHere/RepoNameHere.git
    

答案 4 :(得分:1)

我知道这是一个相当老的线程,但是,以防万一,我编写了自己的凭据存储来管理bitbucket的令牌:

https://github.com/gildas/git-credential-bitbucket