laravel 5.3 passport 的问题 {"error":"Unauthenticated."}
场景:
laravel 5.3 passport https://laravel-china.org/doc...
api路由是官方的示例:
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api')
使用
Authorization: Bearer eyJ0eXAiO....
的方式请求API
问题:
问题1. 非私人令牌无法请求成功
如果是使用$token = $user->createToken('Token Name')->accessToken
生成 私人访问令牌
,
得到token之后,请求可以成功
但是使用(这也是官方示例程序)
Route::get('/connect', function () {
$query = http_build_query([
'client_id' => '2',
'redirect_uri' => url('/redirect'),
'response_type' => 'code',
'scope' => 'email',
]);
return redirect(url('/oauth/authorize?'.$query));
});
Route::get('/redirect', function (Request $request) {
$http = new GuzzleHttp\Client;
$response = $http->post(url('/oauth/token'), [
'form_params' => [
'grant_type' => 'authorization_code',
'client_id' => '2',
'client_secret' => 'TYtsC5iTPh4oNysvjvv7KJV4qda7sc0bwIH2Gpdp',
'redirect_uri' => url('/redirect'),
'code' => $request->input('code'),
],
]);
return json_decode((string) $response->getBody(), true);
});
先登录,然后请求connect
,授权
之后,跳转到redirect
获取得到access_token
使用 Authorization: Bearer access_token
总是 {"error":"Unauthenticated."}
问题2
我不太理解通过authorization_code
和私人令牌
有什么区别,不都是令牌吗?只是有效期的问题
为何通过authorization_code
得到的令牌无法使用?
生成的都在oauth_access_tokens
表中,也没什么区别。
使用authorization_code
生成的 access_token
在https://jwt.io/无法校验通过,私人令牌
可以
官网也介绍的非常少。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是我自己的问题
Chrome没有装JSON的高亮组件,我居然没发现中间有一个
refresh_token
导致我从头复制到尾了,调试了几个小时,哎。