获取“授权服务器不支持授权授予类型”;从亚马逊


Getting "The authorization grant type is not supported by the authorization server" from amazon

我正在尝试获得访问令牌,但我得到这个错误

{"error_description":"授权服务器不支持授权授予类型","error";unsupported_grant_type"}

$code =  $_GET['code'];
$postfields = array(
    'grant_type'=>'authorization_code',
    'code'=>$code,
    'redirect_uri='=>'example/myTest.php',
    'client_id'=>'amzn1.application-oa2-client.xxxxxxxxxxx',
    'client_secret'=>'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.amazon.com/auth/o2/token');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($httpRequest, CURLOPT_HEADER, 1);
// Edit: prior variable $postFields should be $postfields;
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // On dev server only!
$result = curl_exec($ch);
print_r($result);

更改CURLOPT_HTTPHEADER

Content-Type: application/x-www-form-urlencoded

Content-Type: application/json

尝试将'token_type' => 'bearer'添加到$postfields数据中。

这是来自亚马逊开发者文档:"访问令牌请求…"返回的令牌类型。应该是持票人。"

"访问令牌响应:…unsupported_grant_type客户端指定的token_type错误。"

这是一个很老的问题,但是在官方文档中它说有效值是refresh_tokenclient_credentials