我正在尝试使用Laravel和socialite设置Google登录。我已将所有内容设置为进入Google登录页面并将我重定向回应用程序。但是,当我被重定向时,我总是在“登录”页面而不是“主页”页面上。成功登录Google后,我没有登录我的Laravel应用程序。有什么问题?
/**
* Obtain the user information from Google.
*
* @return \Illuminate\Http\Response
*/
public function handleProviderCallback()
{
try {
$user = Socialite::driver('google')->user();
} catch (\Exception $e) {
return redirect('/login');
}
// check if they're an existing user
$existingUser = User::where('email', $user->email)->first();
if($existingUser){
// log them in
auth()->login($existingUser, true);
} else {
// create a new user
$newUser = new User;
$newUser->name = $user->name;
$newUser->email = $user->email;
$newUser->google_id = $user->id;
$newUser->avatar = $user->avatar;
$newUser->avatar_original = $user->avatar_original;
$newUser->save();
auth()->login($newUser, true);
}
return redirect()->to('/home');
}
尽管有人要求登录用户,但在重定向回应用程序时我没有登录。如何确保在使用Google登录后登录到Laravel应用程序?
更新
当$ user变量从Google返回时,我得到了InvalidStateException
try catch块实际上会抛出异常。如果我发现异常,它看起来像:
事实证明,在我的 .env 文件中有什么打破了它:
SESSION_DOMAIN=http://localhost:8000
删除此行可修复此问题!
答案 0 :(得分:0)
从 .env 文件中删除SESSION_DOMAIN