[英]laravel 5.3 login with facebook
我在laravel 5.3項目中實現了用facebook登錄。 當我從facebook用戶獲取所有記錄到數據庫的數據時,它似乎可以正常工作,但是我的項目將身份驗證狀態記錄為未記錄。 此外,它不會將我重定向到儀表板,而是顯示帶有回調鏈接的白頁。 為什么?
它將用戶重定向到fagebook頁面進行登錄
public function redirectToProvider()
{
return Socialite::driver('facebook')->redirect();
}
回調處理程序
public function handleProviderCallback()
{
try{
$socialUser = Socialite::driver('facebook')->user();
}
catch(\Exception $e) {
return redirect('/dashboard');
}
$user = User::where('facebook_id', $socialUser->getId())->first();
if(!$user){
User::create([
'facebook_id' => $socialUser->getId(),
'name' => $socialUser->getName(),
'email' => $socialUser->getEmail(),
]);
auth()->login($user);
return redirect()->to('/dashboard');
}
}
我的auth()-> login似乎不起作用,並且也重定向了。 可能是什么問題? 謝謝!
路線:
Route::get('dashboard', ['as' => 'dashboard', 'uses' => 'PageController@getDashboard']);
Route::get('auth/facebook', 'Auth\RegisterController@redirectToProvider');
Route::get('auth/facebook/callback', 'Auth\RegisterController@handleProviderCallback');
對於您編寫回調處理程序的方式,此行為似乎是正確的。 我相信您要發生的事情是,如果該用戶存在,那么您想登錄他們,如果該用戶存在,則當前代碼無效,因此您需要確保該用戶是否存在,並且已經登錄。
我將代碼更改如下:
$user = User::where('facebook_id', $socialUser->getId())->first();
if(!$user){
User::create([
'facebook_id' => $socialUser->getId(),
'name' => $socialUser->getName(),
'email' => $socialUser->getEmail(),
]);
}
if(Auth::loginUsingId($user->id)){
return redirect()->intended('/dashboard');
}
這樣,如果有用戶,他們仍然會登錄,而不是處理程序不執行任何操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.