Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉威尔社交名流与多供应商_Php_Facebook_Laravel_Twitter_Laravel Socialite - Fatal编程技术网

Php 拉威尔社交名流与多供应商

Php 拉威尔社交名流与多供应商,php,facebook,laravel,twitter,laravel-socialite,Php,Facebook,Laravel,Twitter,Laravel Socialite,我正在使用Laravel5.4,还使用socialite软件包来处理来自社交网络帐户的注册/登录。 相应地,我有下面的代码,用户可以通过facebook注册/登录,但我也想要twitter和谷歌系统 public function handleProviderCallback() { try { $user = Socialite::driver('facebook')->fields([ 'first_name',

我正在使用Laravel5.4,还使用socialite软件包来处理来自社交网络帐户的注册/登录。 相应地,我有下面的代码,用户可以通过facebook注册/登录,但我也想要twitter和谷歌系统

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一样工作


谢谢。

我知道这是5.3的教程,但你可以采用相同的原则,并将其应用于你的情况。您需要向驱动程序传递一个字符串,让它知道您希望使用哪个提供程序。它还显示了一种设置表、搜索迁移部分的有效方法。希望这有帮助

authenticate方法使用Socialite的driver方法,该方法使用一个表示我们要使用的社交提供者的字符串。需要注意的是,此方法需要与支持的提供程序匹配的值。因此,如果我们想通过facebook进行身份验证,我们应该传递字符串facebook;对于谷歌,我们通过谷歌等等