2016-10-18 93 views
2

我有一個方法,當我保存用戶信息的檢查,如果用戶登錄或不經過:檢查,如果用戶登錄或不使用社交認證

public function index() 
    { 
      if(Auth::check()) 
      { 
        $newuser=new User(); 
        $newuser->username=Auth::user()->username; 
        $newuser->email=Auth::user()->email; 
        $newuser->save(); 
      } 
      else 
      { 
       // not logged in 
      } 

    } 

但是,如果用戶登錄在使用社交認證時,Auth::check()顯示false並且執行else語句。如何檢查,如果用戶使用像社會authentication.Something記錄:

if(Auth::check() || Socialite::driver('facebook')->user()) 
{ 
    // logged in 
} 
else 
{ 
    // not logged in 
} 

我能得到的名稱和電子郵件:

$username = Socialite::driver('facebook')->user()->username; 
$email = Socialite::driver('facebook')->user()->email; 

回答

0

如果用戶在登錄,然後你可以得到這樣

$user = Socialite::driver('facebook')->user(); 

所以你功能的用戶實例將

public function index() 
{ 
     $user = Socialite::driver('facebook')->user(); 
     if($user) 
     { 
       $newuser=new User(); 
       $newuser->username=$user->username; 
       $newuser->email=$user->email; 
       $newuser->save(); 
     } 
     else 
     { 
      // not logged in 
     } 

} 

因此,如果用戶在使用社交認證,然後

$user = Socialite::driver('facebook')->user(); 

會得到你 用戶實例,然後你可以保存用戶的詳細信息記錄。

+0

如果用戶使用社交身份驗證登錄,我想不顯示未登錄。 – Steve

+0

如果用戶使用社交認證登錄,您可以通過 $ user = $ user = Socialite :: driver('facebook') - > user()獲取該用戶實例。 ,然後將該用戶的用戶名和電子郵件保存到數據庫中。 –

1

你如何在社交認證回調中做Auth::login($fbUser, true);。注意$fbUserAuthenticatableuser模型。您必須將社交身份驗證用戶詳細信息轉換爲user模型。

以這種方式Auth::check()Auth::user()將返回FB用戶的詳細信息。

+0

但是如果用戶從他的社交媒體帳戶註銷會怎麼樣?你將如何檢查?使用這個我們只能檢查用戶是否登錄了我們的網站而不是提供商的網站 –