【问题标题】:laravel socialite not working on live server, only works on local machinelaravel socialite 不能在实时服务器上工作,只能在本地机器上工作
【发布时间】:2019-11-08 19:48:04
【问题描述】:

我最近将我的应用程序移到了实时服务器中。
问题是 laravel socialite 停止工作,下面是解释:
我点击谷歌登录并选择电子邮件后,在回调时会发生这种情况:
InvalidStateException on Abstract.php on line 200.
为了解决这个问题,我使用了stateless(),现在新的错误是:
Client error: `POST https://www.googleapis.com/oauth2/v4/token` resulted in a `400 Bad Request` response: { "error": "invalid_request", "error_description": "Missing required parameter: code" }

这是我已经尝试过的事情的清单:
1- 在 Google 网站中,我将 google api urlcallback url 更新为新的实时域地址: http://www.domain-name.comhttp://www.domain-name.com/login/google/callback

2- 我修改了 config/session.php 文件,如下所示:
'domain' => env('SESSION_DOMAIN', 'www.domain-name.com'),

3- 我的存储文件夹已经拥有这样的权限:
drwxrwxr-x 5 root www-data 4096 Jun 24 18:30 storage

4- 我更改了vendor\laravel\socialite\src\Two\GoogleProvider.php 文件并删除了“配置文件”,现在它看起来像这样:

protected $scopes = [
'openid',
'email',
];

5- 我使用了php artisan cache:clearcomposer dump-autoload,多次清除浏览器缓存数据。

6- 我试过 $userSocial = Socialite::with('google')->user(); 而不是 $userSocial = Socialite::driver('google')->user(); ,但我仍然得到 InvalidStateException on Abstract.php on line 200。只有当我更改为$userSocial = Socialite::driver('google')->stateless()->user(); 时,错误才会更改为我在问题开头所说的内容。

我的config/services.php文件是这样的:

'google' => [
    'client_id' => 'my-correct-client-id-from-google',
    'client_secret' => 'my-correct-client-secret-from-google',
    'redirect' => 'http://www.domain-name.com/login/google/callback',
],

我已经尝试解决此问题 2 天了。任何帮助将不胜感激。

【问题讨论】:

  • 您有 SSL 证书吗?在生产环境中,Google 可能只会向 HTTPS 端点提供代码以避免被拦截。
  • 真的吗?!我从来没有想到过……不,我还没有 SSL 证书。希望这行得通。
  • 不是 SSL 证书问题。

标签: laravel exception google-oauth laravel-5.8 laravel-socialite


【解决方案1】:

在浪费了许多小时之后。终于找到答案了:
是 nginx:
所以我跑了sudo nano /etc/nginx/sites-available/default

并修正了这一行:

try_files $uri $uri/ /index.php?query_string; // wrong 

try_files $uri $uri/ /index.php?$query_string; // fixed 

【讨论】:

    【解决方案2】:

    感谢@Pooria Honarmand 经过数小时的花费,我发现了您提到的相同原因。 因为我无法更改默认配置。

    您也可以设置如下参数:

    $urlArr=parse_url($_SERVER['REQUEST_URI']);
    parse_str($urlArr['query'], $output);
    $request->merge($output);
    

    【讨论】:

      【解决方案3】:

      我有同样的问题,我今天花了两天多的时间更新了我的作曲家并删除了我的供应商文件夹并再次安装作曲家,问题已经解决了

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-16
        • 2016-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-01
        • 1970-01-01
        • 2019-03-01
        相关资源
        最近更新 更多