Ошибка Laravel passport api unsupported_grant_type

#laravel #oauth #laravel-passport

#laravel #oauth #laravel-passport

Вопрос:

Я успешно устанавливаю passport api в laravel, я могу получить access_token, используя запрашивающие токены, такие как

    Route::get('/redirect', function () {
  $query = http_build_query([
      'client_id' => '1',
      'redirect_uri' => 'http://example.com/callback',
      'response_type' => 'code',
      'scope' => '',
  ]);

     return redirect('http://localhost:8000/oauth/authorize?'.$query);
  });
  

но когда я использую токены предоставления пароля, created by php artisan passport:client --password используя имя пользователя и пароль,
Я получаю unsupported_grant_type

мой запрос,

    $http = new GuzzleHttpClient;
    $response = $http->post('http://localhost:8000/oauth/token', [
       'form_params' => [
        'grant_type' => 'password',
        'client_id' => '3',
        'client_secret' => 'sqgaA8HOBUZBBZwWnl4xhyDE7LWyhAhlG5BZa199',
        'username' => 'myusername',
        'password' => 'mypassword',
        'scope' => '',
        ],
      ]);

     return json_decode((string) $response->getBody(), true);
  

Я получаю ошибку, подобную этой;

  {
 "error": "unsupported_grant_type",
 "message": "The authorization grant type is not supported by the authorization server.",
 "hint": "Check the `grant_type` parameter"
  }
  

моя таблица oauth_clients является,

   id      => 3
  user_id => 1
  name    => Laravel Password Grant Client
  secret  => sqgaA8HOBUZBBZwWnl4xhyDE7LWyhAhlG5BZa199
  redirect => http://localhost
  personal_access_client => 0
  password_client => 1
  revoked => 0
  created_at => 2019-03-27 15:46:10
  updated_at => 2019-03-27 15:46:10
  

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

1. Это не работает, когда я использую расширение restlet crome для публикации данных,

2. Ваш client_id => '3' должен быть client_id => 3 . Попробуйте удалить кавычки.

3. мой запрос post — это localhost: 8000 /oauth / … * @Хари Харкер

4. В вашем запросе ваше redirect_uri есть http://example.com/callback , но в oauth_clients таблице оно есть http://localhost . Измените его соответствующим образом и получите определение маршрута для вашего uri обратного вызова. Также убедитесь, что APP_URL установлен правильный uri приложения (http:\localhost или корневой uri вашего домена) в вашем .env файле