使用 Laravel 社交名流将 Facebook 数据(性别、出生日期、地址和简历)输入数据库

Input Facebook Data (Gender, Birthdate, Address and Bio) into database with Laravel Socialite

我已经创建了一个完整的代码,它允许通过使用 Laravel Socialite 在数据库中获取用户的姓名、电子邮件和头像来登录 Facebook。

我是这样写的:

$user = User::create([
                'email' => $providerUser->getEmail(),
                'name' => $providerUser->getName(),
                'avatar' => $providerUser->getAvatar(),
                'password' => md5(rand(1,10000)),
            ]);

但是为了将性别、出生日期和地址放入数据库,我尝试了这个。

$user = User::create([
                'email' => $providerUser->getEmail(),
                'name' => $providerUser->getName(),
                'avatar' => $providerUser->getAvatar(),
                'gender' => $providerUser->getGender(),
                'bio' => $providerUser->getBio(),
                'password' => md5(rand(1,10000)),
            ]);

但是,没有getGender()getBio()等功能。你知道它们是什么吗?

我还在 SocialController.php

中请求了对 Facebook Driver 的必要权限
public function redirect()
  {
      return Socialite::driver('facebook')->fields([
        'first_name', 'last_name', 'email', 'gender', 'birthday'
        ])->scopes([
            'email', 'user_birthday'
        ])->redirect();
  }

所有必要的东西,如数据库表、迁移、模型和一个没有性别和生物的工作项目都已准备就绪。但我需要在数据库中添加更多信息。我该怎么做?

我已经在 Whosebug 上搜索过此类问题,但没有找到满意的答案。我希望有人回答这个问题。

提前致谢。

Facebook 的默认社交名流提供程序没有获取性别和简历的方法。

有关更多信息,您可以在此处查看可用方法:

https://github.com/laravel/socialite/blob/3.0/src/Contracts/User.php https://github.com/laravel/socialite/blob/3.0/src/AbstractUser.php

这个 Whosebug 可能对您有所帮助:

除了在重定向中获取范围外,您还需要在回调中传递它们

 public function handleFacebookCallback()
{
    $facebook_user = Socialite::driver('facebook')->fields([
        'first_name', 'last_name', 'email', 'gender', 'birthday'
    ])->user();
}

检查可用的辅助方法

https://github.com/laravel/socialite/blob/3.0/src/AbstractUser.php

  • offsetExists('gender')
  • offsetGet('gender')

这些方法可以帮助从用户数组中获取额外信息