我这一整天都找到了很多教程。我的设置与那里的所有基本教程完全相同。
目前,我能够访问 http://localhost/oauth/token
并成功返回令牌给我。
之后,我使用 ARC(高级 Rest 客户端)来测试调用我自己的 api。
我已经通过了标题,例如
Authorization: Bearer the_token_here
accept: application/json
从该标题中,我只想访问 laravel /user
提供的默认 API。
但是,我总是得到 { "message": "Unauthenticated." }
的回应
我可以按照教程进行登录,但无法通过端点 details
获取数据。它返回响应 { "message": "Unauthenticated." }
我的路线 api.php
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function(){
Route::get('/user', function( Request $request ){
return $request->user();
});
});
顺便说一句,laravel.log 中没有错误消息,我已设置为调试模式
更新感谢 Mayank 指出的评论
League\\OAuth2\\Server\\Exception\\OAuthServerException: The resource owner or authorization server denied the request. in /.../vendor/league/oauth2-server/src/Exception/OAuthServerException.php:173
Stack trace:
#0 /.../vendor/league/oauth2-server/src/AuthorizationValidators/BearerTokenValidator.php(59): League\\OAuth2\\Server\\Exception\\OAuthServerException::accessDenied('Missing "Author...')
#1 /.../vendor/league/oauth2-server/src/ResourceServer.php(82): League\\OAuth2\\Server\\AuthorizationValidators\\BearerTokenValidator->validateAuthorization(Object(Zend\\Diactoros\\ServerRequest))
#2 /.../vendor/laravel/passport/src/Http/Middleware/CheckClientCredentials.php(46): League\\OAuth2\\Server\\ResourceServer->validateAuthenticatedRequest(Object(Zend\\Diactoros\\ServerRequest))
原文由 Kasnady 发布,翻译遵循 CC BY-SA 4.0 许可协议
为了获得原因的详细错误消息,您需要转到
CheckClientCredentials
类详细信息如下根据错误信息。在我的问题中。
解决方案是将其添加到根文件夹的
.htaccess
(不仅在公用文件夹内)官方文档中也有注释 请参考这里
如果没有上述配置,
Authorization
标头将在从任何地方调用应用程序时被忽略。一旦被忽略,内部类将无法检索此标头数据