【问题标题】:Laravel 5.1 and Socialite QuestionsLaravel 5.1 和社交名流问题
【发布时间】:2016-06-07 02:17:41
【问题描述】:

这不是关于我现在遇到的问题的帖子。我打算在我的应用程序中使用Laravel Socialite 插件,我已经有了一个使用 Laravel 内置的Auth 系统的完整工作登录/注册系统,但我想知道是否有一个好方法可以让已经拥有的用户他们在我的应用程序中的帐户将他们的社交资料链接到已经存在的帐户?

计划是他们可以使用他们的用户名和密码他们的任何社交资料登录。到目前为止,我所做的所有研究都解释了如何设置社交名流并利用这些数据注册/登录新用户,但是我找不到任何东西可以将两者结合在一起。

我不是在寻找任何人为我写这篇文章,所以请不要被这篇文章弄糊涂。

感谢您提供任何信息, 安迪

【问题讨论】:

    标签: php laravel laravel-5.1 laravel-socialite


    【解决方案1】:

    绝对的。

    我在一个站点上有 FB 和 Twitter OAuth。我这样做的方法是将oauth_facebook_idoauth_twitter_id 列添加到users 表(以及avatar 列,如果你愿意的话)。

    我将路由设置为/auth/{provider}/auth/{provider}/callback,例如/auth/facebook/auth/facebook/callback

    在我的AuthController 上的handleProviderCallback($provider) 方法中,我获取了返回的用户的详细信息,并使用他们的电子邮件、Facebook OAuth ID 或 Twitter OAuth ID 检查他们是否已经存在于我的数据库中。如果它们存在,我设置他们的电子邮件、OAuth ID 和他们的头像,如果它们不存在,我创建它们。然后我将它们登录。

        $user = Socialite::driver($provider)->user();
    
        $user_query = User::where('email', $user->email)
            ->orWhere('oauth_facebook_id', $user->id)
            ->orWhere('oauth_twitter_id', $user->id)
            ->get();
    
        if($user_query->count() > 0) {
    
            $the_user = $user_query->first();
    
            if($provider === 'facebook') {
                $the_user->oauth_facebook_id = $user->id;
            }
    
            if($provider === 'twitter') {
                $the_user->oauth_twitter_id = $user->id;
            }
    
            $the_user->avatar = $user->avatar;
    
            $the_user->save();
    
            \Auth::login($the_user, true);
    
            return redirect('/');
        }
    
        $new_user = User::create([
            'name' => $user->name,
            'email' => $user->email,
            'oauth_facebook_id' => $provider === 'facebook' ? $user->id : NULL,
            'oauth_twitter_id' => $provider === 'twitter' ? $user->id : NULL,
            'avatar' => $user->avatar
        ]);
    
        \Auth::login($new_user, true);
    
        return redirect('/');
    

    希望这可以帮助您了解如何操作。

    【讨论】:

    • 这是一个很棒的信息,非常感谢。唯一的问题,如果你想称之为,有人可能会使用与我的应用程序不同的电子邮件来处理社交方面的事情(我在几个网站上这样做)。您是否认为有一种方法可以使用此代码在使用用户名和密码登录后启用关联帐户?
    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 2019-02-06
    • 2015-12-09
    • 2016-07-06
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多