与Google的Laravel Socialite保存不同的ID号码,导致重复的错误
我得到了Laravel 5.2和最新版本的Socialite,可以正常使用Twitter和Facebook登录,但不能使用Google登录。
通过Google,用户可以第一次登录并插入到数据库中。 但是,当用户在注销后重新尝试登录时,会出现问题。 在我的回调函数中,getId()调用返回一个数字,例如1048710206853583 #####。 但是,在MySQL数据库中,一个数字(如92233720368547 #####)会在用户第一次登录provider_id字段后被存储。 这发生在我正在使用的单个getId()调用中。 看起来谷歌正在返回两个不同的ID。 这可能吗? 我可能做错了什么?
public function redirectToProvider($provider = null)
{
if(!config("services.$provider")) abort('404'); //handle providers that don't exist
return Socialite::driver($provider)->redirect();
}
public function handleProviderCallback($provider = null)
{
$social_user = Socialite::driver($provider)->user();
$oauth_id = $social_user->getId();
$user = User::where('oauth_id', $oauth_id)->first();
if (!$user) {
$user = new User();
$user->email = $social_user->getEmail();
if($social_user->getNickname() && strlen( $social_user->getNickname() ) > 0)
$user->username = $social_user->getNickname();
else
$user->username = $social_user->getEmail();
$user->oauth_id = $oauth_id;
$user->oauth_type = $provider;
$user->password = null;
$user->confirmation_code = null;
$user->save();
}
Auth::loginUsingId($user->id);
...
}
链接地址: http://www.djcxy.com/p/33117.html
上一篇: Laravel Socialite with Google saves different ID number, causes duplicate error
下一篇: Laravel 5.2 login with Laravel Auth Component and AngularJS