我有一个方法,在检查用户是否登录后保存用户信息:
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;
答案 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);
怎么样?注意$fbUser
是Authenticatable
user
模型。您必须将社交认证用户详细信息转换为user
模型。
这样Auth::check()
和Auth::user()
将返回FB用户详细信息。