2017-06-01 121 views
2

我使用laravel 5.4並且還使用社交網絡包來處理來自社交網絡帳戶的註冊/登錄。 corrently我有下面的代碼,用戶可以註冊/通過Facebook登錄,但我也想要twitter和谷歌系統。Laravel社交網絡與多供應商

public function handleProviderCallback() 
    { 
     try { 
      $user = Socialite::driver('facebook')->fields([ 
      'first_name', 'last_name', 'email', 'gender' 
     ])->scopes(['first_name', 'last_name'])->user(); 
     } catch (Exception $e) { 
      return redirect()->route('user.index'); 
     } 

     $authUser = $this->findOrCreateUser($user); 

     Auth::login($authUser, true); 

     return redirect()->route('jobseeker.profile'); 
    } 

    /** 
    * Return user if exists; create and return if doesn't 
    * 
    * @param $facebookUser 
    * @return User 
    */ 
    private function findOrCreateUser($facebookUser) 
    { 
     $authUser = User::where('fb_id', $facebookUser->id)->first(); 

     if ($authUser){ 
      return $authUser; 
     } 
     return User::create([ 
      'fb_id' => $facebookUser->id, 
      'first_name' => $facebookUser->user['first_name'], 
      'last_name' => $facebookUser->user['last_name'], 
      'username' => $facebookUser->user['last_name'], 
      'avatar' => $facebookUser->avatar, 
      'email' => $facebookUser->email, 
      'gender' => $facebookUser->user['gender'], 
     ]); 

    } 

我面臨的問題是,如果我只用一個供應商,如Facebook,我現在一切都很好,但如果我添加與社交名媛不會工作,第二個註冊/登錄系統。

我讀過一些文章,看到他們使用像

public function handleProviderCallback($provider) 

但老實說,我沒有得到它如何使供應商之間的區別和識別它們。

所以我需要幫助讓這兩個社交帳戶在我的項目以及Facebook上工作。

謝謝。

回答

0

我知道它的5.3教程,但你可以採取相同的原則,並將其應用於你的情況。 Social Login with Multiple Providers。你需要傳遞一個字符串給驅動程序,讓它知道你想使用哪個提供程序。它還顯示了設置表格的有效方法,搜索遷移部分。希望這可以幫助。

認證方法中利用社交名媛的驅動方法,它代表我們要使用的社會提供一個字符串。請注意,此方法需要與支持的提供者匹配的值。所以,如果我們想用Facebook進行身份驗證,我們應該傳遞字符串Facebook;對於谷歌我們通過谷歌等。