Laravel socialite with multi provider

Viewed 1996

I'm using laravel 5.4 and also use socialite package to handle register/login from social network accounts. corrently I have code below and users can register/login via facebook but I also want twitter and google system as well.

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'],
        ]);

    }

The issue I'm facing is if I use only one provider like Facebook which I am now everything is fine but if I add second one register/login system with socialite wont work.

I read some articles and saw they used like

public function handleProviderCallback($provider)

but honestly I didn't get it how it makes difference between providers and recognize them.

So I need help to get those two social accounts works on my project as well as facebook does.

Thanks.

1 Answers
Related