Laravel Passport密码授予刷新令牌

尝试使用Laravel的Passport和移动客户端。 密码授予类型的身份validation似乎是要走的路,我让它与我的iOS应用程序一起工作,但我无法让令牌刷新工作。

在进行身份validation时,我会获得一个token和我存储的refresh token ,但是当令牌过期时,调用oauth/token/refresh路径不起作用。 该路由正在使用web中间件,这意味着我的app使用api路由无法访问它。 我不确定他们是否打算让移动客户永远不刷新,或者他们是否希望你自己刷新? 如果有人知道这应该如何工作,那就太好了。

oauth/token/refresh路由不用于刷新访问令牌。 它用于刷新瞬态令牌,当您从javascript使用自己的API时使用。

要使用refresh_token刷新访问令牌,需要使用grant_typerefresh_token调用oauth/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); 

关于范围的一个注释,当您刷新令牌时,您只能获得与原始访问令牌相同或更窄的范围。 如果您尝试获取原始访问令牌未提供的作用域,则会出现错误。