当我尝试使用google或fb登录时,我只在本地计算机上出现此错误。我几乎100%确定我的服务和session.php设置正确。但是,唉,我们在这里......
我的services.php谷歌设置:
<button onclick="checkInput()">Button</button>
我的会议
// Pure JS
function checkInput () {
if(document.getElementById('inputId').value == "correct input") {
var modal = document.getElementById("modalId");
modal.className = modal.className + " hide";
}
}
//JQuery
function checkInput () {
if($('#inputId').val() == "correct input") {
$('#modalId').modal('toggle');
}
}
答案 0 :(得分:5)
我发现了原因,虽然我不确定为什么会出现这个问题,但可能是因为ubuntu / nginx版本,但我们就去了。
为了在nginx中获得正确的laravel设置,我已经使用过了 https://www.digitalocean.com/community/tutorials/how-to-install-laravel-with-an-nginx-web-server-on-ubuntu-14-04
也证实了这一点 https://laravel.com/docs/5.1/installation#pretty-urls
它也是与宅基地相同的nginx配置,所以通常会有人看不到任何问题,但在从谷歌返回后专门检查查询字符串后,我注意到它丢失了。 laravel中的路由本身运行良好,但无法查看常规查询字符串。
所以答案是在位置块内而不是
try_files $uri $uri/ /index.php$query_string;
你需要使用
try_files $uri $uri/ /index.php$is_args$args;
我是从
中找到的答案 1 :(得分:3)
这个问题与你的会话有关,这总是一个棘手的问题。在oAuth2中,您可以在发送用户进行身份验证时提供state
参数,然后在用户通过身份验证后将其发送回您的应用程序。
Socialite将随机字符串放入会话和此state
参数,并在用户返回时检查它是否包含相同的值。
有几个尝试的解决方案......
首先,您是否可以使用您的用户名和密码而不是Google oauth登录?
检查您的config/session.php
域名是否设置正确,如果您通过HTTPS运行,则https
选项仅设置为true
。如果启用了https
选项,则只有在通过访问站点时才会设置会话。 HTTPS。
'domain' => 'example.com',
如果您在应用程序中使用子域,则会在会话配置中将.
添加到域的开头。这将允许会话传递到所有子域。
'domain' => '.example.com',
当您收到google登录信息后,您应该会在网址上看到state
参数,检查返回您的应用程序时是否也会返回此状态。
您还可以尝试清除浏览器Cookie和缓存(或使用隐身窗口),这样可以确保以前的测试/现有Cookie之间没有冲突。
您还可以通过删除/vendor
文件夹并再次运行composer install
来尝试重新安装依赖项。这对我来说已经解决了会议的问题,原因不明。
答案 2 :(得分:0)
您可以尝试几种选择:
在您的域的会话文件中以http://
为首,如下所示:
'domain'=> 'http://local.mysite.com'
确保域名&amp;协议在提出请求时不区分收到请求。
确保您的来源地址&amp;你的配置重定向地址 谷歌控制台匹配您的应用程序中配置的路线。
从控制台运行以下命令。 php artisan cache:clear
&amp; composer dump-autoload
最后,清除您的浏览器缓存&amp;饼干。
答案 3 :(得分:0)
有同样的问题,没有一个解决方案有效,那么我得到了答案:
检查.env文件并确保 SESSION_DRIVER 未设置 数组
数组会话将不会持久存在,这就是为什么Socialite无法验证状态并返回此错误。
您可以设置:
SESSION_DRIVER=file
或从这些类型中选择(数组除外): https://laravel.com/docs/5.0/session#session-drivers
如果您使用memcached / redis / database或cookie,请确保它们已配置并正常工作。
答案 4 :(得分:0)
我遇到了同样的错误,我解决了将所有社交网络路由放入网络中间件的问题。
我们需要\ Illuminate \ Session \ Middleware \ StartSession来启动会话。