检查用户是否使用社交身份验证登录

时间:2016-10-18 13:13:38

标签: laravel authentication facebook-oauth

我有一个方法,在检查用户是否登录后保存用户信息:

 public function index()
    {
           if(Auth::check())
            {
                  $newuser=new User();
                  $newuser->username=Auth::user()->username;
                  $newuser->email=Auth::user()->email;
                  $newuser->save();
            }
            else 
            {
                 // not logged in
            }

    }

但是,如果用户使用社交身份验证登录,则Auth::check()显示false并执行else语句。如何检查用户是否使用社交认证登录。例如:

if(Auth::check() || Socialite::driver('facebook')->user())
{
   // logged in
}
else
{
   // not logged in
}

我可以通过以下方式获取姓名和电子邮件:

$username = Socialite::driver('facebook')->user()->username;
$email = Socialite::driver('facebook')->user()->email;

2 个答案:

答案 0 :(得分:1)

如果用户已登录,则可以获得此类用户实例

$user = Socialite::driver('facebook')->user();

所以你的功能将是

public function index()
{
       $user = Socialite::driver('facebook')->user();
       if($user)
        {
              $newuser=new User();
              $newuser->username=$user->username;
              $newuser->email=$user->email;
              $newuser->save();
        }
        else
        {
             // not logged in
        }

}

所以如果用户使用社交认证登录,那么

$user = Socialite::driver('facebook')->user();

将为您获取该用户实例 然后你可以保存该用户的详细信息。

答案 1 :(得分:1)

你在社交认证回调中做Auth::login($fbUser, true);怎么样?注意$fbUserAuthenticatable user模型。您必须将社交认证用户详细信息转换为user模型。

这样Auth::check()Auth::user()将返回FB用户详细信息。