我正在尝试使用客户端凭据授予 token 进行机器对机器的身份验证。我有两个单独的网站(API和Web)。
我已经在API上创建了一个客户端凭据授予客户端。
php artisan passport:client --client
在Web上,我尝试使用以下代码从API检索 token 。 PASSWORD_ID/PASSWORD_SECRET存储在我的.env文件中,我直接从数据库中复制了它们,因此它们绝对正确。
$guzzle = new GuzzleHttp();
$response = $guzzle->get('http://testsite-api.test/oauth/token', [
'form_params' => [
'grant_type' => 'client_credentials',
'client_id' => env('PASSPORT_ID'),
'client_secret' => env('PASSPORT_SECRET'),
],
]);
从这我得到以下错误:
Client error:
POST http://testsite-api.test/oauth/token
resulted in a401 Unauthorized
response: {"error":"invalid_client","error_description":"Client authentication failed","message":"Client authentication failed"}
请注意:我将此代码拖到Mac(使用代客)上,并立即生效。
我已经使用 postman 对其进行了测试,并且第一次使用Web中使用的ID/SECRET进行了测试。
有什么想法我要去哪里吗?我可以肯定这是一个宅基地问题,但是我很难找到解决方法。
最佳答案
问题可能与使用env()
函数有关。如果配置是使用php artisan config:cache
缓存的,则env()
函数始终返回null
,您可以通过运行php artisan config:clear
并尝试再次发送请求来进行测试,它应该可以正常工作。
另外,您还应该重构应用程序,env()
应该仅在config/
文件中使用,这样您就可以缓存变量,并且在您的应用程序中只需使用config('app.PASSPORT_SECRET')
,app
是配置文件所在的文件名。
关于php - 使用Homestead时检索客户端凭据授予 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62345782/