我试图在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.html
在PHP
中使用时,我做了类似的事情:
$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' => '**********'
);
但仍然没有帮助。
答案 0 :(得分:1)
您错过了-u
标记,其中base-64对您的"client_id:secret"
字符串进行了编码,并将其设置在Authorization
标题中。
要在PHP中实现其效果,请设置CURLOPT_USERPWD
选项。
了解更多here。