使用Homestead时检索客户端凭据授予令牌

时间:2020-06-12 13:58:52

标签: php laravel homestead laravel-passport

我正在尝试使用客户端凭据授予令牌进行机器对机器的身份验证。我有两个单独的网站(API和Web)。

我已经在API上创建了客户端凭据授予客户端。

php artisan passport:client --client

在网络上,我正在尝试使用以下代码从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'),
        ],
    ]);

由此我得到以下错误:

客户端错误:POST http://testsite-api.test/oauth/token导致401 Unauthorized响应:{“错误”:“ invalid_client”,“ error_description”:“客户端身份验证失败”,“消息”:“客户端身份验证失败”}

请注意:我将此代码拖到Mac(使用代客)上,并立即生效。

我已经使用邮递员对其进行了测试,并且首次使用Web中使用的ID / SECRET进行了测试。

有什么想法我要去哪里吗?我可以肯定这是一个宅基地问题,但是我很难找到解决方法。

1 个答案:

答案 0 :(得分:6)

问题可能与使用env()函数有关。如果配置是用php artisan config:cache缓存的,则env()函数总是返回null,您可以通过运行php artisan config:clear并尝试再次发送请求来进行测试,它应该可以正常工作。

还应该重构应用,env()仅应用于config/文件中,这样就可以缓存变量,并且在应用中只需使用config('app.PASSPORT_SECRET'),{{1 }}是配置所在的文件名。