2017-05-03 68 views
0

我正在制作一个Laravel 5.4项目,我希望用户在注册和创建用户之前选择一所学校(他们将分配给他们)。 我的问题是,谷歌登录是应用程序的主要登录方法,并在LoginController中处理用户创建。我为Google登录使用Socialite包。社交名片注册(Laravel 5.4)

如何将用户和数据从google回调传递到注册页面?

这是我的LoginController:

public function redirectToProvider() 
{ 
    return Socialite::driver('google')->redirect(); 
} 

public function handleProviderCallback() 
{ 
    try 
    { 
     $user = Socialite::driver('google')->user(); 
    } 
    catch (Exception $e) 
    { 
     return redirect('auth/google'); 
    } 

    $authUser = $this->findOrCreateUser($user); 

    Auth::login($authUser, true); 

    return redirect('/home'); 
} 

public function findOrCreateUser($googleUser) 
{ 
    $authUser = User::where('google_id', $googleUser->id)->first(); 

    if ($authUser) { 
     return $authUser; 
    } 

    return User::create([ 
     'name' => $googleUser->name, 
     'email' => $googleUser->email, 
     'google_id' => $googleUser->id, 
     'avatar' => $googleUser->avatar 
    ]); 
} 

回答

0

您可以使用flashed session。 试试这个:

public function handleProviderCallback() 
{ 
    try 
    { 
     $user = Socialite::driver('google')->user(); 
    } 
    catch (Exception $e) 
    { 
     return redirect('auth/google'); 
    } 

    $authUser = User::where('google_id', $user->id)->first(); 

    if($authUser) //if user is found 
    { 
     Auth::login($authUser, true); 
     return redirect('/home'); 
    } 
    else //if user is not found, redirect to register page 
    { 
     return redirect('/register')->with('user', $user); 
    } 
} 

,并在您注册查看

<input type='text' name='email' value='{{session("user")->email}}'>