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
如果是使用$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."}
我不太理解通过authorization_code和私人令牌有什么区别,不都是令牌吗?只是有效期的问题
为何通过authorization_code得到的令牌无法使用?
生成的都在oauth_access_tokens表中,也没什么区别。
使用authorization_code生成的 access_token 在https://jwt.io/无法校验通过,私人令牌可以
官网也介绍的非常少。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
是我自己的问题
Chrome没有装JSON的高亮组件,我居然没发现中间有一个
refresh_token导致我从头复制到尾了,调试了几个小时,哎。