出于某种原因,当我试图用脸书或谷歌登录Laravel社交名媛时,我得到了这个例外:
AbstractProvider中的InvalidStateException。php第199行:
当我的SocialiteController试图从facebook驱动程序获取用户时,会引发异常。
public function callback(SocialAccountService $service, $provider)
{
try {
var_dump(Socialite::driver('facebook')->user());
以下是AbstractProvider.php中似乎抛出实际异常的部分:
public function user()
{
if ($this->hasInvalidState()) {
throw new InvalidStateException;
}
我一直在学习这个教程https://blog.damirmiladinov.com/laravel/laravel-5.2-socialite-twitter-login.html#.WFK0BfnhCUk.由于某种原因,登录在上周之前一直运行良好。
我读了其他文章说我应该改变配置/session.php所以域不是空的,而是我的当前域(在我的情况下localhost:8000因为我用XAMPP运行本地),并刷新Laravel缓存等。但这并没有奏效。
我发现我的Laravel应用程序cookie丢失,这导致了InvalidStateExcure异常。
我还注意到,每次HTTP请求后都不会重新创建cookie。当我将Config/Session.php中的域值从当前值(localhost)更改为null(默认值)时,Cookie将再次重新创建。
尝试
session()->put('state', $request->input('state'));
$user = Socialite::driver('facebook')->user();