从到位桶请求的OAuth令牌(Request OAuth token from BitBucket)

2019-07-31 11:26发布

我一直在试图整合到位桶我的应用程序在过去的4个小时无果。

尽管通读到位桶的REST API文档 ,我注意到,你需要使用OAuth -没关系,我使用JR康林的OAuthSimple库,如果罚款由我(我试过OAuth的PHP ,但它是有点复杂-我没有需要所有的这样一个小的集成这些选项)。

对于我个人理解,第一步通过OAuth验证是请求通过POST一个新的令牌。 当提供必要的参数,你应该从到位桶的响应,这样的:

oauth_token=Z6eEdO8lOmk394WozF9oJyuAv899l4llqo7hhlSLik&oauth_token_secret=Jd79W4OQfb2oJTV0vzGzeXftVAwglnEJ9lumzYcl&oauth_callback_confirmed=true

要做到这一点,我使用的卷曲和OAuthSimple:

$key    = 'key_provided_by_bitbucket';
$secret = 'key_provided_by_bitbucket';
$path   = 'https://api.bitbucket.org/1.0/oauth/request_token';

$params = array(
    'oauth_consumer_key'        => $key,
    'oauth_nonce'               => base_convert(mt_rand(10000, 90000), 10, 32) . 'a',
    'oauth_signature'           => 'HMAC-SHA1',
    'oauth_signature_method'    => 'HMAC-SHA1',
    'oauth_timestamp'           => time(),
    'oauth_callback'            => base_url('dashboard'),
    'oauth_version'             => '1.0a'
);

$oauth  = new OAuthSimple($key, $secret);
$result = $oauth->sign(array(
    'action'        => 'POST',
    'path'          => $path,
    'parameters'    => $params
));

// load resulting url into a string
$ch = curl_init($result['signed_url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$r = curl_exec($ch);
curl_close($ch);

问题是,当我把我的请求,两件事情之一发生:

  1. 如果我把它像张贴在这里,我会得到一个401错误(我可以看到,通过curl_getinfo($ CH))
  2. 如果我设置curl_setopt($ CH,CURLOPT_POST,1),我得到一个400错误的请求

结果字符串(存储在$r )是一个空字符串。 该signed_url是正确形成的URL据我所知,这是这样的:

https://api.bitbucket.org/1.0/oauth/request_token?oauth_callback=http%3A%2F%2Flocalhost%2Fidv&oauth_consumer_key=key_provided_by_bitbucket&oauth_nonce=b47a&oauth_signature=3A1R%2FoKxTqh6Q23poaS%2BVNzhwpE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1347167282&oauth_version=1.0a

如果我手动输入地址转换成浏览器中我的地址栏,我会得到一个身份验证对话框到位桶API,端口443,我不能用我的凭据登录,但。 然后,它只会继续说:“无法验证的OAuth请求。”

我不知道我做错了,因为它是使用OAuth我的第一次。

任何帮助的感谢!

Answer 1:

问题是,卷曲将验证SSL证书。

为了解决这个问题,你可以告诉卷曲忽略SSL证书的验证:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);


文章来源: Request OAuth token from BitBucket