为什么我无法检索facebook性别?[Laravel 5.1 Socialite]


Why I cant retrieve the facebook gender? [Laravel 5.1 Socialite]

我刚刚用Laravel Socialite制作了一个身份验证控制器。第一次我只是检索姓名和电子邮件数据,然后我试图检索性别,但出现了一个错误,显示

未定义的属性:Laravel''Socialite''Two''用户::$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"
}
'gender' => $fbUser->user['gender'],

因为性别出现在用户[]数组中。。。所以你可以通过这种方式访问它。

但请记住,您需要获得应用程序的Facebook权限才能检索此值。