2016-07-21 15 views
1

Es gab mehrere Beiträge zu SO bezüglich dieses Problems und nachdem ich alle Lösungen ausprobiert habe, die ich gefunden habe, bin ich sicher, dass mit meinem Code etwas nicht stimmt. Hier ist die aktuelle Wiederholung meines sozialen Login-Codes für Facebook.Laravel 5.1 Intermittierender Ausnahmezustand

Um klar zu sein, dieser Code funktioniert etwa 90% der Zeit. Für ungefähr 10% der Benutzer auf meiner Site lösen sie ungültige Ausnahmefehler aus und können sich nicht anmelden.

Ich plane, die gesamte Site auf Laravel 5.3 nächsten Monat neu zu erstellen, also brauche ich nur diesen Fix, um 30 zu halten Tage.

Hier ist mein Code:

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('/'); 
    } 

Antwort