laravel socialite 不能在实时服务器上工作,只能在本地机器上工作
laravel socialite not working on live server, only works on local machine
我最近将我的应用程序移到了实时服务器中。
问题是laravel socialite停止工作,下面是解释:
我点击 google 登录并在选择电子邮件后,在回调时发生这种情况:
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 url
和 callback url
更新为新的实时域地址:
http://www.domain-name.com
和 http://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
文件并删除了 'profile',现在它看起来像这样:
protected $scopes = [
'openid',
'email',
];
5-我使用了php artisan cache:clear
,composer 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 天了。任何帮助将不胜感激。
在浪费了许多小时之后。终于找到答案了:
这是 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
谢谢@Pooria Honarmand
经过几个小时的花费,我发现了与您提到的相同的原因。
因为我无法更改默认配置。
或者您可以设置如下参数:
$urlArr=parse_url($_SERVER['REQUEST_URI']);
parse_str($urlArr['query'], $output);
$request->merge($output);
我有同样的问题我今天花了两天多时间更新了我的作曲家并删除了我的供应商文件夹并再次安装了作曲家,问题已经解决
我最近将我的应用程序移到了实时服务器中。
问题是laravel socialite停止工作,下面是解释:
我点击 google 登录并在选择电子邮件后,在回调时发生这种情况:
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 url
和 callback url
更新为新的实时域地址:
http://www.domain-name.com
和 http://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
文件并删除了 'profile',现在它看起来像这样:
protected $scopes = [
'openid',
'email',
];
5-我使用了php artisan cache:clear
,composer 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 天了。任何帮助将不胜感激。
在浪费了许多小时之后。终于找到答案了:
这是 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
谢谢@Pooria Honarmand 经过几个小时的花费,我发现了与您提到的相同的原因。 因为我无法更改默认配置。
或者您可以设置如下参数:
$urlArr=parse_url($_SERVER['REQUEST_URI']);
parse_str($urlArr['query'], $output);
$request->merge($output);
我有同样的问题我今天花了两天多时间更新了我的作曲家并删除了我的供应商文件夹并再次安装了作曲家,问题已经解决