Spotify Web API 无法获取访问令牌
Posted
技术标签:
【中文标题】Spotify Web API 无法获取访问令牌【英文标题】:Spotify Web API can not get access token 【发布时间】:2020-10-09 22:50:12 【问题描述】:$response = Http::withHeaders([
'Authorization' => 'Basic '. base64_encode(env('CLIENT_ID').':'.env('CLIENT_SECRET')),
'Content-Type' => 'application/x-www-form-urlencoded'
])->post('https://accounts.spotify.com/api/token', [
'code' => trim($code),
'redirect_uri' => env('REDIRECT_URI'),
'grant_type' => 'authorization_code',
]);
print_r($response->json());
这个返回码:
[error] => unsupported_grant_type [error_description] => grant_type 参数丢失 当我想获得访问令牌时。
【问题讨论】:
我们如何扩展来自 API 的相当清晰的响应? @RiggsFolly - 在完全响应时我收到 400 bad gateway error 看来此人遇到了同样的问题,原因是网关错误 400。尝试移动您的数据参数:***.com/questions/28159288/… 【参考方案1】:我通过使用 Guzzle 客户端库而不是 laravel 的 Http 外观解决了问题。我将选项发送为 form_params。感谢您的回复。
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://accounts.spotify.com/api/token', [
'headers' => $headers,
'form_params' => $options
]);
【讨论】:
【参考方案2】:在 Laravel 中,如果您希望使用 Http 客户端并将 Content-type 设置为“application/x-www-form-urlencoded”,只需调用 asForm() 方法,如 Laravel Http 文档中所述(来源:@987654321 @)。
$response = Http::withHeaders(['Authorization' => 'Basic ' . base64_encode(env('CLIENT_ID') . ':' . env('CLIENT_SECRET'))])
->asForm()
->post('https://accounts.spotify.com/api/token', [
'code' => trim($code),
'redirect_uri' => env('REDIRECT_URI'),
'grant_type' => 'authorization_code'
]);
【讨论】:
以上是关于Spotify Web API 无法获取访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
Spotify 在服务器上获取访问令牌 - Spotify API 有那么糟糕吗?
spotify-web-api-node:authorizationCodeGrant()给出400 - 错误请求