如何使用 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"
  ),
));