недействительный_грант для пароля, предоставление_тип паспорта Laravel

#laravel #laravel-passport

Вопрос:

Я пытаюсь создать access_token для своего API, но у меня проблема с отображением этого сообщения:

 "error": "invalid_client",
"error_description": "Client authentication failed",
"message": "Client authentication failed"
 

Это мои данные запроса:

 {
  "username":"neal.jacobi@example.org",
  "password":"test1234",
  "grant_type":"password",
  "client_id": "2",
  "client_secret":"jScq3DMMeZctypnYb7f1ClEHyzybwTK1Yisqo09E"
}
 

Это моя таблица oauth_clients:

oauth_clients_table

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

1. Вы имеете Request data в виду, говоря header это ?

Ответ №1:

Вы пытаетесь добавить scope в свой запрос данные.

 {
  "username":"neal.jacobi@example.org",
  "password":"test1234",
  "grant_type":"password",
  "client_id": "2",
  "client_secret":"jScq3DMMeZctypnYb7f1ClEHyzybwTK1Yisqo09E",
  "scope" => ""
}
 

Если у вас возникнут какие-либо проблемы, скажите мне.

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

1. когда я добавляю область, показываю unsupported_grant_type

2. с «областью применения» : «*» работа

Ответ №2:

Вам необходимо отправить следующее в теле запроса.

 {
  "username":"neal.jacobi@example.org",
  "password":"test1234",
  "grant_type":"password",
  "client_id": "2",
  "client_secret":"jScq3DMMeZctypnYb7f1ClEHyzybwTK1Yisqo09E"
}
 

Учетные данные клиента проверяются из тела запроса следующим способом.

 // LeagueOAuth2ServerGrantAbstractGrant 
// line 253 
protected function getClientCredentials(ServerRequestInterface $request)
    {
        [$basicAuthUser, $basicAuthPassword] = $this->getBasicAuthCredentials($request);

        $clientId = $this->getRequestParameter('client_id', $request, $basicAuthUser); // It is fetching from request body

        if (is_null($clientId)) {
            throw OAuthServerException::invalidRequest('client_id');
        }

        $clientSecret = $this->getRequestParameter('client_secret', $request, $basicAuthPassword);

        if ($clientSecret !== null amp;amp; !is_string($clientSecret)) {
            throw OAuthServerException::invalidRequest('client_secret');
        }

        return [$clientId, $clientSecret];
    }