我正在使用:
制作了Laravel Docs for Laravel Passport上描述的所有清单,在完成某些步骤后,我会收到HTTP 401以获取有效的OAuth访问令牌。
答案 0 :(得分:1)
我也有一个非常相似的问题:
您的代码与我的代码之间存在差异:
在routes/api.php
中,我只使用auth:api
。
我没有在app文件夹中创建PassportServiceProvider.php
。
在Kernel.php
我的client
而非client_credentials
。
我在POST请求调用中使用client_credentials
作为grant_type
。
结果我总是得到401。
直到我使用密码授予客户端创建用户:
php artisan passport:client --password
在POST请求调用中将client_credentials
更改为password
:
$http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => 'taylor@laravel.com',
'password' => 'my-password',
'scope' => '',
],
]);
$access_token = json_decode((string) $response->getBody(), true)['access_token'];
将访问令牌放入标题的承载中,它可以正常工作。
此外,您还可以使用$request->user();
如果您使用client_credentials
作为grant_type
,它会通过客户端中间件,因此需要删除中间件auth:api
。
答案 1 :(得分:-1)