Laravel社交网络与多供应商
问题描述:
我使用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上工作。
谢谢。
答
我知道它的5.3教程,但你可以采取相同的原则,并将其应用于你的情况。 Social Login with Multiple Providers。你需要传递一个字符串给驱动程序,让它知道你想使用哪个提供程序。它还显示了设置表格的有效方法,搜索迁移部分。希望这可以帮助。
认证方法中利用社交名媛的驱动方法,它代表我们要使用的社会提供一个字符串。请注意,此方法需要与支持的提供者匹配的值。所以,如果我们想用Facebook进行身份验证,我们应该传递字符串Facebook;对于谷歌我们通过谷歌等。