我正在使用Laravel 5.7和oauth2的通行证。当我尝试通过邮递员访问/ api / user路由时,出现此错误。
答案 0 :(得分:1)
我发现了问题。实际上,我使用的是Swoole服务器,而不是php-fpm。我必须将Passport类添加到swoole配置文件swoole_http.php中的Provides数组中。
答案 1 :(得分:0)
也许您还没有设置警卫。
请先检查您将驱动程序设置为config/auth.php
。
答案 2 :(得分:0)
Passport包含一个authentication guard,它将验证传入请求上的访问令牌。将api Guard配置为使用通行证驱动程序后,只需在需要有效访问令牌的任何路由上指定auth:api中间件:
Route::get('/user', function () {
//
})->middleware('auth:api');
在调用受Passport保护的路由时,应用程序的API使用者应在其请求的Bearer
标头中将其访问令牌指定为Authorization
令牌。例如,当使用Guzzle HTTP库时:
$response = $client->request('GET', '/api/user', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$accessToken,
],
]);
答案 3 :(得分:0)
遇到类似情况,您需要在 config / auth.php 文件中将驱动程序配置为 passport 。 对于我来说,我发现了一个虚拟命令“ passportphp artisanpassport:keys 而不是“ passport””
'api' => [
'driver' => 'passport',
'provider' => 'users',
'hash' => false,
],
接下来请仔细检查标题,并确保已设置
授权:“承载者+令牌”和接受到 Application / json
答案 4 :(得分:0)
如果在config / auth.php中大写“ passport”,也会出现此问题:
正确:
'api' => [
'driver' => 'passport',
错误:
'api' => [
'driver' => 'Passport',
请注意,护照的首字母不能大写!