laravel社交名流不在实时服务器上工作,仅在本地计算机上工作
我最近将我的应用程序移动到了一个实时服务器上laravel社交名流不在实时服务器上工作,仅在本地计算机上工作,laravel,exception,google-oauth,laravel-5.8,laravel-socialite,Laravel,Exception,Google Oauth,Laravel 5.8,Laravel Socialite,我最近将我的应用程序移动到了一个实时服务器上 问题是拉威尔的社交名流停止了工作,下面是解释: 我点击谷歌登录,选择电子邮件后,在回拨时会发生这种情况: 第200行Abstract.php上的InvalidStateException。 为了解决这个问题,我使用了stateless(),现在新的错误是: 客户端错误:`POSThttps://www.googleapis.com/oauth2/v4/token`导致“400错误请求”响应:{“错误”:“无效请求”,“错误描述”:“缺少必需参数:代码
问题是拉威尔的社交名流停止了工作,下面是解释:
我点击谷歌登录,选择电子邮件后,在回拨时会发生这种情况:
第200行Abstract.php上的InvalidStateException。
为了解决这个问题,我使用了
stateless()
,现在新的错误是:客户端错误:`POSThttps://www.googleapis.com/oauth2/v4/token`导致“400错误请求”响应:{“错误”:“无效请求”,“错误描述”:“缺少必需参数:代码”}
以下是我已经尝试过的事情列表:
1-在谷歌网站上,我将谷歌api
url
和回调url
更新为新的实时域名地址:
http://www.domain-name.com
和http://www.domain-name.com/login/google/callback
2-我修改了config/session.php文件,如下所示:'domain'=>env('SESSION\u domain','www.domain-name.com'),
3-我的存储文件夹已具有如下权限:drwxrwxr-x 5 root www-data 4096 Jun 24 18:30存储
4-我更改了vendor\laravel\socialite\src\Two\GoogleProvider.php
文件并删除了“profile”,现在看起来是这样的:
protected $scopes = [
'openid',
'email',
];
'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',
],
5-我多次使用php artisan cache:clear,composer dump autoload
,并清除浏览器缓存数据
6-我尝试了$userSocial=Socialite::with('google')->user()
而不是$userSocial=Socialite::driver('google')->user()代码>,我仍然在第200行的Abstract.php上得到InvalidStateException。仅当我更改为$userSocial=Socialite::driver('google')->无状态()->user()时代码>错误更改为我在问题开头所说的内容
我的config/services.php
文件如下:
protected $scopes = [
'openid',
'email',
];
'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',
],
我已经试着修复这两天了。任何帮助都将不胜感激。在浪费了许多小时之后。终于找到了答案:
这是nginx:
所以我运行了sudo nano/etc/nginx/sites available/default
并修正了这一行:
try_files $uri $uri/ /index.php?query_string; // wrong
到
谢谢@Pooria Honarmand
花了几个小时后,我发现了你提到的同样的原因。
因为我无法更改默认配置
或者,您可以设置如下参数:
$urlArr=parse_url($_SERVER['REQUEST_URI']);
parse_str($urlArr['query'], $output);
$request->merge($output);
我遇到了同样的问题,今天我花了两天多的时间更新了我的composer,删除了我的供应商文件夹,再次安装了composer,问题已经解决了您是否有SSL证书?在生产中,谷歌可能只向HTTPS端点提供代码以避免被截获。真的吗?!我从来没有想到过。。。不,我还没有SSL证书。希望这能起作用。这不是SSL证书问题。