【问题标题】:Spotify Web API can not get access tokenSpotify Web API 无法获取访问令牌
【发布时间】: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。尝试移动您的数据参数:stackoverflow.com/questions/28159288/…

标签: php laravel spotify guzzle


【解决方案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'
                ]);
    

    【讨论】:

      猜你喜欢
      • 2018-01-08
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      相关资源
      最近更新 更多