使用 Homestead 时检索客户端凭据授予令牌
Retrieving client credentials grant tokens when using Homestead
我正在尝试使用客户端凭据授予令牌进行机器对机器身份验证。我有两个独立的站点(API 和 Web)。
我在 API.
上创建了一个客户端凭据授予客户端
php artisan passport:client --client
在 Web 上,我尝试使用以下代码从 API 检索令牌。 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 a 401 Unauthorized
response: {"error":"invalid_client","error_description":"Client authentication failed","message":"Client authentication failed"}
请注意:我将此代码拉到我的 Mac(使用 valet)上,它立即运行。
我已经使用 postman 对其进行了测试,它第一次成功,使用的是 Web 中使用的 ID/SECRET。
有什么地方出错了吗?我相当确定这是一个宅基地问题,但我很难找到解决办法。
问题可能与使用 env()
函数有关。如果配置缓存 php artisan config:cache
env()
函数始终 returns null
,您可以通过运行 php artisan config:clear
并尝试再次发送请求来测试它,它应该工作正常。
你还应该重构你的应用程序,env()
应该只在 config/
文件中使用,这样你就可以缓存你的变量,在你的应用程序中只需使用 config('app.PASSPORT_SECRET')
,app
是配置的文件名。
我正在尝试使用客户端凭据授予令牌进行机器对机器身份验证。我有两个独立的站点(API 和 Web)。
我在 API.
上创建了一个客户端凭据授予客户端php artisan passport:client --client
在 Web 上,我尝试使用以下代码从 API 检索令牌。 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(使用 valet)上,它立即运行。
我已经使用 postman 对其进行了测试,它第一次成功,使用的是 Web 中使用的 ID/SECRET。
有什么地方出错了吗?我相当确定这是一个宅基地问题,但我很难找到解决办法。
问题可能与使用 env()
函数有关。如果配置缓存 php artisan config:cache
env()
函数始终 returns null
,您可以通过运行 php artisan config:clear
并尝试再次发送请求来测试它,它应该工作正常。
你还应该重构你的应用程序,env()
应该只在 config/
文件中使用,这样你就可以缓存你的变量,在你的应用程序中只需使用 config('app.PASSPORT_SECRET')
,app
是配置的文件名。