Laravel 8 — unsupported_grant_type

#php #laravel #http #http-post #laravel-8

#php #laravel #http #http-сообщение #laravel-8

Вопрос:

У меня проблема со следующим:

  • Я создаю API (я новичок в этом)
  • С помощью этого API я хочу использовать другой API или веб-сервис
  • В Postman я делаю запрос get на URL, и он возвращает НОРМАЛЬНО access_token, но в проекте Laravel он возвращает: "error" => "unsupported_grant_type".

Это мой код:

 use IlluminateSupportFacadesHttp;

$response = Http::withHeaders([
            'content-type' => 'application/x-www-form-urlencoded'
        ])->post('http://url:52904/Token', [
            'userName' => 'menganito',
            'password' => 'pepito',
            'grant_type' => 'password'
        ]);

        dd($response->json());
  

Я попытался установить ** Laravel Passport **, но пока я не использую базу данных.

Комментарии:

1. Какие параметры вы отправляете в postman и какой API использует?

2. Это больше похоже на проблему типа гранта OAuth2 , чем на проблему Laravel. Пожалуйста, используйте Postman для выполнения запроса POST с теми же grant_type и данными, чтобы посмотреть, возвращает ли он тот же результат. Если это так, используемый вами API просто не поддерживает этот тип предоставления (как указано в ошибке).

3. В postman я отправляю x-www-form-urlencoded, но если я выберу form-params, вернутся «ошибка» => «unsupported_grant_type»

Ответ №1:

Проблема заключалась в x-www-form-urlencoded.

Это решило мою проблему (asForm)

 $response = Http::asForm()->post('http://url.com', [
                'userName' => 'user',
                'password' => 'pass',
                'grant_type' => 'password'
        ]);

dd($response->json());