【问题标题】:Why I cant retrieve the facebook gender? [Laravel 5.1 Socialite]为什么我无法检索 facebook 性别? [Laravel 5.1 社交名流]
【发布时间】: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


【解决方案1】:
'gender' => $fbUser->user['gender'],

因为性别出现在 user[] 数组中...所以您可以通过这种方式访问​​它。

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

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 2016-06-07
    • 2017-04-04
    • 2015-10-11
    • 2015-10-14
    • 1970-01-01
    • 2016-01-01
    • 2016-05-26
    • 2016-07-06
    相关资源
    最近更新 更多