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

Tom*_*nks 5 php laravel homestead laravel-passport

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

我在 API 上创建了一个客户端凭据授予客户端。

php artisan passport:client --client
Run Code Online (Sandbox Code Playgroud)

在 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'),
        ],
    ]);
Run Code Online (Sandbox Code Playgroud)

由此我收到以下错误:

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

请注意:我将此代码拉到我的 Mac(使用代客泊车)上,它立即生效。

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

任何想法我哪里出错了?我相当确定这是一个宅基地问题,但我很难找到解决办法。

Man*_*nas 6

问题可能与使用env()功能有关。如果配置与缓存php artisan config:cacheenv()功能总是返回null,您可以通过乳宁测试php artisan config:clear,并试图再次发送请求时,它应该只是罚款。

此外,您应该重构您的应用程序,env()应该只在config/文件中使用,这样您就可以缓存您的变量,并在您的应用程序中简单地使用config('app.PASSPORT_SECRET')app作为配置放置它的文件名。