php - 使用Homestead时检索客户端凭据授予 token

标签 php laravel homestead laravel-passport

我正在尝试使用客户端凭据授予 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 a 401 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/

相关文章:

vagrant - 从 genymotion 访问宅基地主机

php - Laravel 从表中选择随机 id

mysql - 在 Laravel 5 homestead 工作时访问在 XAMPP 中创建的数据库

php - Symfony 的缓存和权限错误

php - 在 Laravel 中保存模型时直接设置 ID 和设置 Eloquent 关联关系的区别?

php - laravel 验证使用 "numeric"规则失败,数据来自表单中的数字

php - 由于 apache2 配置,Laravel 4 Controller 路由无法正常工作

php - 无法从 homestead 连接到主机 mongodb

php - 为什么 bootstrap 会破坏 WordPress 管理?

php - 调用未定义函数 simplexml_load_file()