与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