Spotify Web API не может получить токен доступа - PullRequest
0 голосов
/ 19 июня 2020
$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 отсутствует, когда я хочу получить токен доступа.

Ответы [ 2 ]

0 голосов
/ 17 августа 2020

В Laravel, если вы планируете использовать Http-клиент и устанавливаете Content-type на «application / x- www-form-urlencoded», просто вызовите метод asForm (), как описано в Laravel Http-документации (источник: https://laravel.com/docs/master/http-client#authentication).

$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'
            ]);
0 голосов
/ 20 июня 2020

Я решил проблему, используя клиентскую библиотеку Guzzle вместо Http-фасада laravel. И я отправил параметры как form_params. Спасибо за ваши ответы.

$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://accounts.spotify.com/api/token', [
            'headers' => $headers,
            'form_params' => $options
        ]);
...