Я использую laravel 5.4, а также использую пакет socialite для обработки регистрации / входа из учетных записей социальных сетей. соответственно, у меня есть код ниже, и пользователи могут регистрироваться / входить в систему через facebook, но я также хочу использовать систему twitter и google.
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.
Спасибо.