【发布时间】:2017-11-02 04:56:09
【问题描述】:
我正在使用 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 一样。
谢谢。
【问题讨论】:
标签: php facebook laravel twitter laravel-socialite