绝对地。
我在一个站点上有 FB 和 Twitter OAuth。我这样做的方法是向表中添加oauth_facebook_id
和oauth_twitter_id
列users
(以及一avatar
列,如果你想要的话)。
我将路线设置为and /auth/{provider}
,/auth/{provider}/callback
例如。/auth/facebook
/auth/facebook/callback
在我的handleProviderCallback($provider)
方法中AuthController
,我获取返回的用户的详细信息并检查他们是否已经存在于我的数据库中,以及他们的电子邮件、Facebook OAuth ID 或 Twitter OAuth ID。如果它们存在,我设置他们的电子邮件、OAuth ID 和他们的头像,如果它们不存在,我创建它们。然后我登录他们。
$user = Socialite::driver($provider)->user();
$user_query = User::where('email', $user->email)
->orWhere('oauth_facebook_id', $user->id)
->orWhere('oauth_twitter_id', $user->id)
->get();
if($user_query->count() > 0) {
$the_user = $user_query->first();
if($provider === 'facebook') {
$the_user->oauth_facebook_id = $user->id;
}
if($provider === 'twitter') {
$the_user->oauth_twitter_id = $user->id;
}
$the_user->avatar = $user->avatar;
$the_user->save();
\Auth::login($the_user, true);
return redirect('/');
}
$new_user = User::create([
'name' => $user->name,
'email' => $user->email,
'oauth_facebook_id' => $provider === 'facebook' ? $user->id : NULL,
'oauth_twitter_id' => $provider === 'twitter' ? $user->id : NULL,
'avatar' => $user->avatar
]);
\Auth::login($new_user, true);
return redirect('/');
希望这可以帮助您了解如何做到这一点。