Проблема при создании Oauth Client и запросе токена доступа через код в Laravel Passport

Я использую API проверки подлинности паспорта в Laravel 5.3. Я создал два маршрута, один для генерации oauth-клиентов и второй для запроса access_token. Но я получаю значение NULL от /gen_client маршрут и отображение страницы входа с /redirect маршрут.

Может кто-нибудь помочь мне в этом?

Route::get('/gen_client', function () {
$http = new GuzzleHttp\Client();
$response = $http->post(url('/') . '/oauth/clients', [
'form_params' => [
'id' => '[email protected]',
'name' => 'OK',
'redirect' => url('/') . '/callback'
],
]);
$response_body = json_decode((string)$response->getBody(), true);
var_dump($response_body);
});

Route::get('/redirect', function () {
$oauth_client = DB::table('oauth_clients')->where('id', '=', '[email protected]')->first();
$query = http_build_query([
'client_id' => $oauth_client->id,
'redirect_uri' => $oauth_client->redirect,
'response_type' => 'code',
'scope' => '',
]);

return redirect(url('/') . '/oauth/authorize?'.$query);
});

Route::post('callback', function (Request $request) {
$http = new GuzzleHttp\Client();
$oauth_client = DB::table('oauth_clients')->where('id', '=', '[email protected]')->first();
$response = $http->post(url('/') . '/oauth/token', [
'form_params' => [
'grant_type' => 'authorization_code',
'client_id' => $oauth_client->id,
'client_secret' => $oauth_client->secret,
'redirect_uri' => url('/') . '/callback',
'code' => $request->code,
],
]);
$response_body = json_decode((string)$response->getBody(), true);
var_dump($response_body);
$access_token = $response_body['access_token'] ;
$refresh_token = $response_body['refresh_token'];
}

);

0

Решение

Ваш gen_client Маршрут ничего не возвращает, поэтому он вернется NULL,

Вы также несколько путаете вещи, пытаясь представить свой собственный Я БЫ и использовать oauth_clients стол напрямую.

Вызов POST / oauth / clients вернет полезную нагрузку, которая включает Я БЫ а также секрет.

Затем вы помещаете эти значения в конфиг и использовать их следующим образом (вместе с другими параметрами, необходимыми для вызова, который вы делаете):

[
'client_id' => config('services.myoauth.client_id'),
'client_secret' => config('services.myoauth.client_secret'),
]

Не получить доступ к oauth_clients таблицы непосредственно, это OAuth работа сервера.

Создание клиентов — это (обычно) ручная работа один раз при подключении веб-приложения клиента OAuth к серверу OAuth.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]