尝试使用Laravel的Passport和移动客户端.密码授权类型的身份验证似乎是要走的路,我让它与我的iOS应用程序一起工作,但是我无法让令牌刷新工作.
在进行身份验证时,我会获得一个令牌和我存储的刷新令牌,但是当令牌过期时,调用oauth / token / refresh路由不起作用.该路由正在使用Web中间件,这意味着我的app使用api路由无法访问它.我不确定他们是否打算让移动客户永远不刷新,或者他们是否希望你自己刷新?如果有人了解这应该如何工作,那就太好了.
解决方法:
oauth / token / refresh路由不用于刷新访问令牌.它用于刷新瞬态令牌,当您从javascript使用自己的API时使用.
要使用refresh_token刷新访问令牌,需要使用grant_type为refresh_token调用oauth / token路由.
这是the documentation提供的示例:
$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);
关于范围的一个注释,当您刷新令牌时,您只能获得与原始访问令牌相同或更窄的范围.如果您尝试获取原始访问令牌未提供的作用域,则会出现错误.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。