为客户集成Trustpilot独特链接功能,使用php和curl

问题描述:

我的需求是为Trustpilot widget的客户生成独特的链接。为此,我需要有一个访问令牌。我尝试了所有可能的方法,但面临同样的错误为客户集成Trustpilot独特链接功能,使用php和curl

{“理由”:“未知grant_type”}“

下面是我为同一

$data = array(
GRANT_TYPE => GRANT_TYPE_VALUE, 
TRUSTPILOT_USERNAME => TRUSTPILOT_USERNAME_VALUE, 
TRUSTPILOT_PASSWORD => TRUSTPILOT_PASSWORD_VALUE, 
); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,“https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken”); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$data); //Post Fields 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‘Authorization: Basic base64 encoded apikey:secretkey’, 
‘Content-Type: application/json’ 
)); 
$server_output = curl_exec($ch); 
curl_close($ch); 
var_dump($server_output); 

感谢代码提前

HAV你试过设置Content-Typeapplication/x-www-form-urlencoded

+0

是的我试过用application/x-www-form-urlencoded但结果是一样的 – Hetal1311

我得到它的工作,但我不得不做一些事情来让它工作。

净荷数据不得不使用http_build_query像这样

$data = http_build_query(array(
    'grant_type' => 'password', 
    'username' => $email, 
    'password' => $password, 
)); 

然后卷曲曾与从服务器验证的SSL证书的问题进行转化。于是我将这两行:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

标头值,其中变成

$authorization = 'Basic '. base64_encode($key . ':' . $secret); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: ' . $authorization, 
    'Content-Type: application/x-www-form-urlencoded' 
)); 

最终的代码片段:

$data = http_build_query(array(
'grant_type' => 'password', 
'username' => $username, 
'password' => $password, 
)); 
$authorization = 'Basic '. base64_encode($key . ':' . $secret); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: ' . $authorization, 
    'Content-Type: application/x-www-form-urlencoded' 
)); 

希望这会帮助你。

+0

这是否解决了问题,@ Hetal1311? –