我该如何使用facebook register socialite laravel创建唯一的用户名,我在下面有控制器代码,但我不知道怎么回事,我是laravel的新手。预先感谢。
public function redirectToFacebook()
{
return Socialite::driver('facebook')->fields([
'name', 'email',
])->scopes([
'email'
])->redirect();
}
public function handleFacebookCallback()
{
try {
$user = Socialite::driver('facebook')->user();
$create['name'] = $user->getName();
$create['email'] = $user->getEmail();
$create['facebook_id'] = $user->getId();
$userModel = new User;
$createdUser = $userModel->addNew($create);
Auth::loginUsingId($createdUser->id);
return redirect()->route('/');
} catch (Exception $e) {
return redirect('/');
}
}
答案 0 :(得分:0)
包含用户登录时的时间戳,例如:
$time = Carbon::now()->timestamp;
$create['name'] = $user->getName().$time;
此外,每次用户登录时,它都会尝试创建一个用户,因此请确保首先检查该用户是否存在:
public function handleFacebookCallback()
{
try {
$user = Socialite::driver('facebook')->user();
$create['name'] = $user->getName();
$create['email'] = $user->getEmail();
$create['facebook_id'] = $user->getId();
$user = User::firstOrCreate($create);
Auth::loginUsingId($user->id);
return redirect()->route('/');
} catch (Exception $e) {
return redirect('/');
}
}
使用firstOrCreate()
函数检查它是否存在,然后创建它。