Laravel 5 AbstractProvider.php第200行中的Laravel社交名媛InvalidStateException
我正在本地系统(Ubuntu-14.04 64位)中使用Laravel5.3构建一个web应用程序。我用社交名媛在社交网络上签名。我配置了G+、Facebook和GitHug。我使用Chromium作为默认浏览器。最后,问题是我越来越 AbstractProvider.php第200行中的InvalidStateException 经常。我试过了 php artisan缓存:清除 php artisan配置:清除 作曲家转储自动加载 这些都有助于暂时解决问题,再次引发问题Laravel 5 AbstractProvider.php第200行中的Laravel社交名媛InvalidStateException,laravel-5,laravel-socialite,Laravel 5,Laravel Socialite,我正在本地系统(Ubuntu-14.04 64位)中使用Laravel5.3构建一个web应用程序。我用社交名媛在社交网络上签名。我配置了G+、Facebook和GitHug。我使用Chromium作为默认浏览器。最后,问题是我越来越 AbstractProvider.php第200行中的InvalidStateException 经常。我试过了 php artisan缓存:清除 php artisan配置:清除 作曲家转储自动加载 这些都有助于暂时解决问题,再次引发问题 请在此问题上帮助我。如
请在此问题上帮助我。如果AbstractProvider.php第200行在用户状态不存在时触发异常,则表示无法创建用户 如果您创建了一个用户并返回了该用户,那么当您从提供商(facebook、github)获得详细信息时,首先检查您的代码
如果您管理并登录了应用程序,并且从用户表中删除了该用户,请记住也要从社交名媛帐户表中删除数据 我也有同样的问题,我已经读了很多关于这一点的文章,这取决于您在请求登录时所在的URL是否在开头有www。 如果重定向设置为
http://sitename.tld/callback/facebook
如果您从sitename.tld
发送登录请求,oauth会工作,而如果您从www.sitename.tld
尝试,则会出现异常
一开始我还不知道如何让它在有www和没有www的情况下工作。我遇到了这个异常,因为会话中没有保存“状态”。但是我使用的是asPopup方法-
Socialite::driver('facebook')->asPopup()->redirect()代码>所以我保存了会话-$request->session()->save()代码>。所以我解决了这个问题
或尝试
session()->put('state', $request->input('state'));
$user = Socialite::driver('facebook')->user();
它能工作我有同样的问题,分三步解决
在顶部添加请求
使用\Http\Request
将请求对象传递给函数
公共函数handleProviderCallback(请求$Request)
{
试一试{
$user=Socialite::driver('facebook')->user();
}捕获(例外$e){
抛出新异常;
}
}
清除缓存。
php artisan缓存:清除
我也犯了同样的错误,但我的解决方案有点不同。我在这里张贴只是为了防止其他人继续点击这个帖子,就像我一样,寻找一个可能的答案
我在Ubuntu18.04桌面上开发,因为它是一个带有GUI的服务器。Socialite在本地工作得很好,但当我通过git将更改推/拉到服务器时,它就退出了
我通过记录发送到谷歌和从谷歌发送的信息来进行跟踪。我“dd($_GET)”是为了在社交名媛有机会获得信息之前获得一个原始转储,这样我就知道存储了什么,准备使用什么了。所有的信息都在那里,但社交名流似乎并没有“看到”它。当时我推断是我的apache2头配置干扰了Cookie/会话数据
我在apache2配置中设置了头安全性。其中一个设置是
Header always edit Set-Cookie ^(.*) "$1;HttpOnly;Secure;SameSite=Strict"
此设置干扰了社交名流所需的cookie信息。我从apache2头配置中删除了该设置(通过注释),并重新启动了Apache。最后,我删除了storage/framework/session/*中的所有会话,并将它们从浏览器中清除,以确保安全。这对我很管用
在我让它工作后,一个接一个地启用并测试了以下设置,以确保框架能够保护它可以保护的标题信息:
SESSION_SECURE_COOKIE=true
在my.env文件中
'http\u only'=>true,
和
“同一站点”=>“lax”
(设置为“严格”似乎不起作用)
在我的config/session.php文件中
现在,它又回到了测试安全性和调整事情回来,如果需要的话