【发布时间】:2021-02-18 15:19:52
【问题描述】:
我刚刚使用 Laravel Socialite 制作了一个身份验证控制器。第一次我只是检索姓名和电子邮件数据,然后我尝试检索性别,但它带有一个错误提示
未定义属性:Laravel\Socialite\Two\User::$gender
请有人帮我解决我的问题,哦,是的,我的网站仍处于开发模式,但我认为这不是问题,因为在 facebook 开发人员文档中说我仍然可以访问基本信息,例如名字、姓氏、个人资料图片,性别和年龄范围。
控制器源码:
public function redirectToProvider()
{
return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallback()
{
try {
$user = Socialite::driver('facebook')->user();
} catch (Exception $e) {
return Redirect::to('login/facebook');
}
$authUser = $this->findOrCreateUser($user);
Auth::login($authUser, true);
return Redirect::to('home');
}
private function findOrCreateUser($fbUser)
{
if ($authUser = User::where('email', $fbUser->email)->first()) {
return $authUser;
}
$role = "member";
return User::create([
'firstname' => $fbUser->name,
'email' => $fbUser->email,
'gender' => $fbUser->gender,
'role' => $role
]);
}
如果我使用dd($user); 方法,我在这里提供我所拥有的:
User {# ▼
+token: "tokken value"
+id: "id value"
+nickname: null
+name: "name value"
+email: "email value"
+avatar: "avatar value"
+"user": array:value [▶]
+"avatar_original": "avatar_original value"
}
【问题讨论】:
-
你能做到 $user = Socialite::driver('facebook'); dd($用户);查看返回的内容并确认
gender存在 -
我刚刚做了,并没有回调性别值,我该怎么办?
-
好。这里有什么+“用户”数组...请单击箭头检查。如果是的话,你能在那里看到性别吗?然后你可以尝试使用数组键
-
哇它的工作谢谢先生呵呵..
-
好。这是你用的吗..
$user['user']['gender']或$user->user['gender']
标签: php laravel facebook laravel-5 laravel-socialite