0

我將社交認證的用戶詳細信息存儲到User(可認證)模型,並登錄該用戶。這樣我就可以使用Auth的功能。使用laravel進行社交認證的用戶Auth

回調函數:

public function callback() 
{ 
    $user = Socialite::driver('facebook')->user(); 

    $newUser=new User(); 
    $newUser->name=$user->name; 
    $newUser->email=$user->email; 
    $newUser->remember_token=$user->token; 
    $newUser->save(); 

    Auth::login($newUser, true); 
    return redirect('/'); 
} 

但我隨後發現任何人,因爲我們在我們的應用程序數據庫DONOT商店的Facebook密碼可以只用內置的登錄,正常的登錄表單用戶名登錄,如果不需要密碼驗證。在這種情況下密碼將爲NULL。

我想在用戶註銷後刪除用戶的詳細信息。

public function logout() 
{ 
    User::find(Auth::user()->id)->delete(); 
    Auth::logout(); 
    return redirect('/')->with('message','logged out!'); 
} 

這看起來不太好。什麼是使社交認證用戶使用Auth的正確或更好的方法?

回答

1

這意味着你沒有仔細理解api的生命週期。 將用戶重定向到Facebook頁面讓他們接受您的應用程序並登錄。在Facebook將提供用戶的詳細信息並將它們存儲到fb_id,電子郵件,電話等後創建它們。下一次登錄時,請確保fb_id與用戶登錄返回的匹配。所以在註冊後刪除用戶是沒有意義的。

+0

如果不需要任何密碼驗證,就不能使用內置登錄的用戶名登錄,因爲我們不會將facebook的密碼存儲到'user'模型中? –

+0

是的,我們從Facebook的身份證登錄,因爲Facebook只在登錄後提供身份證,所以我們可以肯定,我們正在生成的身份證是從登錄的用戶,所以不需要passwor這就是爲什麼你正在創建社交身份驗證登錄不是嗎?如果它需要密碼爲每個登錄爲什麼使用社交認證它將是無用的吶? –

+0

我的意思是經過Facebook認證後,我們在'User'模型中存儲了fb id,名稱,用戶名,但沒有密碼。那麼不能有任何人登錄只有用戶名內置登錄不是從Facebook? –