在PHP中使用Curl for bitbucket API

时间:2018-02-13 12:08:16

标签: php curl oauth bitbucket bitbucket-api

我试图在curl中学习PHP,我尝试实施bitbucket API,其中包含以下语法进行身份验证:

$ curl -X POST -u "client_id:secret" \
  https://bitbucket.org/site/oauth2/access_token -d grant_type=password \
  -d username={username} -d password={password}

这是根据文档:https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.htmlPHP中使用时,我做了类似的事情:

$postData = array(
    'grant_type' => 'password',
    'username' => '*******',
    'password' => '**********'
);
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://bitbucket.org/site/oauth2/access_token',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $postData,
));

$response = curl_exec($curl);

但我收到错误

  

" {" error_description":"客户资金缺失;此请求需要使用OAuth客户端ID和密码","错误":" unauthorized_client"}"

进行身份验证

我尝试使用client_id和secret就像这样:

$postData = array(
    'grant_type' => 'password',
    'client_id' => '*******',
    'secret' => '**********'
);

但仍然没有帮助。

1 个答案:

答案 0 :(得分:1)

您错过了-u标记,其中base-64对您的"client_id:secret"字符串进行了编码,并将其设置在Authorization标题中。

要在PHP中实现其效果,请设置CURLOPT_USERPWD选项。

了解更多here