在PHP中为bitbucket API使用Curl

在PHP中为bitbucket API使用Curl,php,curl,oauth,bitbucket,bitbucket-api,Php,Curl,Oauth,Bitbucket,Bitbucket Api,我试图在PHP中学习curl,我尝试实现bitbucketAPI,该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} 这是根据文件: 在PHP中使用时,我做了如下操作: $postData

我试图在
PHP
中学习
curl
,我尝试实现
bitbucket
API,该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}
这是根据文件: 在
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);
$postData = array(
    'grant_type' => 'password',
    'client_id' => '*******',
    'secret' => '**********'
);
但我有个错误

“{”error_description:“缺少客户端凭据;此请求需要使用OAuth客户端id和密码进行身份验证”,“error:“unauthorized_Client”}”

我也尝试过使用client_id和secret,如下所示:

$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);
$postData = array(
    'grant_type' => 'password',
    'client_id' => '*******',
    'secret' => '**********'
);

但是仍然没有帮助。

您缺少
-u
标志,base-64对
“client\u id:secret”字符串进行编码,并将其设置在
授权
标题中

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

阅读更多