2017-05-03 12 views
0

私はLaravel 5.4プロジェクトを作っています。登録する前にユーザが自分が指定する学校を選んでユーザを作成したいと思っています。 私の問題は、Googleログインがアプリケーションのメインログインメソッドであり、ユーザー作成がLoginControllerで処理されることです。私はGoogleログイン用のSocialiteパッケージを使用しています。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}}'> 
関連する問題