【问题标题】:Laravel socialite with multi providerLaravel 社交名流与多提供商
【发布时间】:2017-11-02 04:56:09
【问题描述】:

我正在使用 laravel 5.4 并且还使用 socialite 包来处理来自社交网络帐户的注册/登录。 目前我有下面的代码,用户可以通过 facebook 注册/登录,但我也想要 twitter 和 google 系统。

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 一样。

谢谢。

【问题讨论】:

    标签: php facebook laravel twitter laravel-socialite


    【解决方案1】:

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

    authenticate 方法使用了 Socialite 的驱动方法,它接受一个字符串来表示我们想要使用的社交提供者。请务必注意,此方法需要一个与支持的提供程序匹配的值。因此,如果我们想通过 facebook 进行身份验证,我们应该传递字符串 facebook;对于 Google,我们通过 google 等等。

    【讨论】:

    • 你给的那个链接不起作用
    • @EmtiazZahid 这篇文章已有 4 年历史。可能会更好地查看 [laravel.com/docs/8.x/socialite](Laravel Docs),而不是最好先离开 Laravel 5.4,5.4 的 EOL 是 2017 年 7 月 24 日。谷歌上的大量教程。
    猜你喜欢
    • 2023-03-26
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 2021-02-10
    • 2016-09-11
    • 1970-01-01
    相关资源
    最近更新 更多