如何使用 PHP curl 将客户端凭据作为 grant_type 来获取 OAuth 2.0?
How to get OAuth 2.0 using PHP curl with client credentials as grant_type?
我一直在尝试的:
$header = array(
"Authorization :Basic $authorization",
"Content-Type: application/json"
);
//option 1
$param='{
"grant_type" : "client_credentials"
}';
//option 2
$param = array("Grant_type: client_credentials",);
//option 3
$param = "grant_type=client_credentials";
//option 4
$a = array(
'grant_type' => 'client_credentials');
$param = http_build_query($a);
$ch = curl_init( $url );
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$param);
curl_setopt($ch,CURLOPT_VERBOSE, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,120);
curl_setopt($ch,CURLOPT_TIMEOUT,120);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
$content = curl_exec( $ch );
$err = curl_error($ch);
curl_close( $ch );
我已经尝试了上面的所有选项,但总是出现这样的错误:
response_type or grant_type is required
如何在curl概念中传递grant_type?还是我用错了?
找到答案 link https://auth0.com/docs/api-auth/tutorials/client-credentials
需要添加以下行:
CURLOPT_SSL_VERIFYHOST =>假,
CURLOPT_SSL_VERIFYPEER => 错误,
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://xxy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST =>false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET",
CURLOPT_HTTPHEADER => array(
"content-type: application/x-www-form-urlencoded"
),
));
我一直在尝试的:
$header = array(
"Authorization :Basic $authorization",
"Content-Type: application/json"
);
//option 1
$param='{
"grant_type" : "client_credentials"
}';
//option 2
$param = array("Grant_type: client_credentials",);
//option 3
$param = "grant_type=client_credentials";
//option 4
$a = array(
'grant_type' => 'client_credentials');
$param = http_build_query($a);
$ch = curl_init( $url );
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$param);
curl_setopt($ch,CURLOPT_VERBOSE, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,120);
curl_setopt($ch,CURLOPT_TIMEOUT,120);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
$content = curl_exec( $ch );
$err = curl_error($ch);
curl_close( $ch );
我已经尝试了上面的所有选项,但总是出现这样的错误:
response_type or grant_type is required
如何在curl概念中传递grant_type?还是我用错了?
找到答案 link https://auth0.com/docs/api-auth/tutorials/client-credentials
需要添加以下行:
CURLOPT_SSL_VERIFYHOST =>假, CURLOPT_SSL_VERIFYPEER => 错误,
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://xxy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST =>false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET",
CURLOPT_HTTPHEADER => array(
"content-type: application/x-www-form-urlencoded"
),
));