2016-07-21 5 views
1

В этой связи было несколько сообщений по этому вопросу, и, попробовав все решения, которые я нашел, я уверен, что с моим кодом что-то не так. Вот текущая итерация моего социального кода входа для Facebook.Laravel 5.1 Прерывистое исключение государства

Чтобы быть ясным, этот код работает примерно в 90% случаев. Для примерно 10% пользователей на моем сайте они запускают неверные ошибки исключения состояния и не могут войти в систему.

Я планирую перестроить весь сайт на Laravel 5.3 в следующем месяце, так что мне просто нужно это исправление для последних 30 дней.

Вот мой код:

public function create() 
    { 
     return Socialite::driver('facebook')->redirect(); 
    } 

    /** 
    * Store a newly created resource in storage. 
    * 
    * @param Request $request 
    * @return Response 
    */ 
    public function store(Request $request) 
    { 
     $socialUser = Socialite::driver('facebook')->user(); 

     $user = User::firstOrNew(['socialite_provider' => 'facebook', 'socialite_id' => $socialUser->getId()]); 
     $user->socialite_provider = 'facebook'; 
     $user->socialite_id = $socialUser->getId(); 
     $user->socialite_nickname = $socialUser->getNickname(); 
     $user->socialite_name = $socialUser->getName(); 
     $user->socialite_avatar = $socialUser->getAvatar(); 
     $user->socialite_email = $socialUser->getEmail(); 
     $user->save(); 

     /* 
     * Hack to fix invalid state error, I think this helped a little but it's still not working for all users. 
     */ 
     $state = $request->get('state'); 
     $request->session()->put('state', $state); 
     if (Auth::check() == false) { 
      session()->regenerate(); 
     } 

     // Update orders so that we don't lose our guest cart 
     $oldSessionId = Session::getId(); 

     Auth::login($user, true); 

     $newSessionId = Session::getId(); 
     Order::updateSession($oldSessionId, $newSessionId); 

     return redirect()->intended('/'); 
    } 

ответ

Смежные вопросы