0

我将社交认证的用户详细信息存储到User(可认证)模型,并登录该用户。这样我就可以使用Auth的功能。使用laravel进行社交认证的用户Auth

回调函数:

public function callback() 
{ 
    $user = Socialite::driver('facebook')->user(); 

    $newUser=new User(); 
    $newUser->name=$user->name; 
    $newUser->email=$user->email; 
    $newUser->remember_token=$user->token; 
    $newUser->save(); 

    Auth::login($newUser, true); 
    return redirect('/'); 
} 

但我随后发现任何人,因为我们在我们的应用程序数据库DONOT商店的Facebook密码可以只用内置的登录,正常的登录表单用户名登录,如果不需要密码验证。在这种情况下密码将为NULL。

我想在用户注销后删除用户的详细信息。

public function logout() 
{ 
    User::find(Auth::user()->id)->delete(); 
    Auth::logout(); 
    return redirect('/')->with('message','logged out!'); 
} 

这看起来不太好。什么是使社交认证用户使用Auth的正确或更好的方法?

回答

1

这意味着你没有仔细理解api的生命周期。 将用户重定向到Facebook页面让他们接受您的应用程序并登录。在Facebook将提供用户的详细信息并将它们存储到fb_id,电子邮件,电话等后创建它们。下一次登录时,请确保fb_id与用户登录返回的匹配。所以在注册后删除用户是没有意义的。

+0

如果不需要任何密码验证,就不能使用内置登录的用户名登录,因为我们不会将facebook的密码存储到'user'模型中? –

+0

是的,我们从Facebook的身份证登录,因为Facebook只在登录后提供身份证,所以我们可以肯定,我们正在生成的身份证是从登录的用户,所以不需要passwor这就是为什么你正在创建社交身份验证登录不是吗?如果它需要密码为每个登录为什么使用社交认证它将是无用的呐? –

+0

我的意思是经过Facebook认证后,我们在'User'模型中存储了fb id,名称,用户名,但没有密码。那么不能有任何人登录只有用户名内置登录不是从Facebook? –