我按照此文档从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授权?
答案 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)
我们最近推出了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存储库首先,在bitbucket帐户设置的访问管理部分创建“Oauth”。这给你一个“钥匙”和一个“秘密”。你做到了这一点。
现在使用这些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"
}
现在您已拥有“access_token”,请使用它来克隆私人仓库。但你的回购的网址应该是这样的(保持括号围绕代币):
https://x-token-auth:{tokenHere}@bitbucket.org/yourRepoOwnerHere/RepoNameHere.git
答案 4 :(得分:1)
我知道这是一个相当老的线程,但是,以防万一,我编写了自己的凭据存储来管理bitbucket的令牌: