Laravel OAuth使用restAPI不起作用,但可以在邮递员中使用

时间:2019-10-23 14:28:21

标签: php laravel oauth

我有2个应用程序,它们都在使用Laravel oauth安全性。这些应用程序通过restAPI进行通信 当我通过邮递员请求oauth令牌时,它工作正常,但是当我在第一个应用程序的(Guzzle)http帖子中尝试使用它时,它无法进行身份验证 用户。他们两个都应该使用不同的数据库,但是当我切换时 到mysql,错误消息指出它无法连接到第一个 应用程序的数据库。这里出了什么问题?

 protected function getAccessTokenMerchant()
{
    $client = new Client();
    $response = $client->POST("http://localhost/xxx/public/" . 'oauth/token', [
            'headers' => [
                'Accept' => 'application/json',
                'Content' => 'application/json'
            ],
            'json' => [
                'client_id' => "2",
                'client_secret' => "LlJ90SqW4IPSUfQGiLQVUzKtCr1FKMirS6bBxcf1",
                'grant_type' => 'client_credentials'
            ]
        ]
    );
    return $response->getBody();
}

此代码的响应是 客户端错误:POST http://localhost/xxx/oauth/token导致401 Unauthorized响应。当我使用邮递员向http://localhost/xxx/oauth/token发送请求时,我收到了令牌

{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjAyYzFmZGQwNmE4MTM0MGM5ZDQwNjI3OWI3ZGJjN2E1NzdhMmJiMjllNjZkOTIzODE0Mjg2Y2IxNmVlM2ZiYjcwZDFlZTgxNmQwNDZlOWE4In0.eyJhdWQiOiIyIiwianRpIjoiMDJjMWZkZDA2YTgxMzQwYzlkNDA2Mjc5YjdkYmM3YTU3N2EyYmIyOWU2NmQ5MjM4MTQyODZjYjE2ZWUzZmJiNzBkMWVlODE2ZDA0NmU5YTgiLCJpYXQiOjE1NzE4NDQ4NDcsIm5iZiI6MTU3MTg0NDg0NywiZXhwIjoxNjAzMzgwODQ3LCJzdWIiOiIiLCJzY29wZXMiOltdfQ.WXIOIOVcacv4Cf-V8RlrlWpuIrDu0_cnoykxSQKtwAx1JxrK8dWsZqrxQbYsVU8Nt03apVpbtOEDhn32yIF7xhRuJHuw_p1x-waOJCQ2CDzcmkiumhDcc117CYrn3jrBaEDBKEpZSuI5ZW8-VqSWXmfpc18xjxESpAWej__wT78mKYtelZg00I2M5khJTAD2XaBsjoThdK0QuID6jtlMBaoZJEHzoEj-UKpuizOwvFXwbl6Plz3L_uuQqmKz64y8hfMhgZ8Zc70rkI_iLek7D1yEXn5EsZ5BH0qKgYsIYxyZMdojL4bhT8yjgB4KujZi8tHfM6iHthAgYYJ2WlIBQJ9lCpnGuP4xWyNGmN3HQZ4K5eM7pHkZLu3eEVrl-7JixC0HgDWos25m8_HIUnXaUs-dNDDsDMO0o57JB38ao-frUgfrAU6DgjYTEslmtS0SYpE6JoPTbBn7XYADy4VCP6J67dSm-J_Qbm8GFuyX_o57v43jH4tPFxq-ccnTlfzT-E6ApFsMhYAGli713TQUct2Y3VTQFVRMuDniMMKdsZT8XN4CLGbdN6tic9jQ5W_i-XfWL9vN_RSiXHROAF-KV8nxVj0n4GgycJ9DtV0-C3Qcpyz7Zbh_WrVPW5qsr5j5rrtWXsQ7VZOBCWLAyh4YXe_HSeOXqV-k202kcURZ0UQ"}

当我关闭mySql服务器时,getAccessTokenMerchant()函数将返回以下错误: 未知数据库“ first_application_db”(SQL:从client_credentials中选择*,其中code = EWALLET限制1) 这是不正确的。它应该使用second_application_db而不是first_application_db进行检查。知道发生了什么吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。我的第二个应用程序以某种方式使用客户端的db连接(第一个应用程序的db),这就是为什么它无法验证oauth令牌的原因。我通过运行php artisan config:cache来解决,现在可以了