Попытка обернуть мою голову, используя Паспорт Laravel с мобильными клиентами. Вид аутентификации типа «Предоставление пароля», кажется, является подходящим способом, и у меня есть его работа с моим приложением для iOS, однако я не могу получить обновление токена для работы.
При аутентификации я получаю token
и refresh token
который я храню, однако, когда токен истекает, вызывая oauth/token/refresh
Маршрут не работает. Маршрут использует web
промежуточное ПО, которое означает, что мое приложение, использующее маршрут API, не может получить к нему доступ. Я не уверен, предназначались ли они для мобильных клиентов, чтобы они никогда не обновлялись, или они хотели, чтобы вы катали свои собственные обновления? Если у кого-то есть понимание того, как это должно работать, это было бы здорово.
oauth/token/refresh
Маршрут не предназначен для обновления токенов доступа. Он используется для обновления временных токенов, которые используются, когда вы используете свой собственный API из своего JavaScript.
Чтобы использовать ваш refresh_token
чтобы обновить свой токен доступа, вам нужно вызвать oauth/token
маршрут с grant_type
из refresh_token
,
Это пример, предоставленный документация:
$http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'refresh_token',
'refresh_token' => 'the-refresh-token',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'scope' => '',
],
]);
return json_decode((string) $response->getBody(), true);
Одно замечание о областях: при обновлении токена вы можете получить только идентичные или более узкие области, чем исходный токен доступа. Если вы попытаетесь получить область, которая не была предоставлена исходным токеном доступа, вы получите сообщение об ошибке.
Других решений пока нет …