使用Laravel Socialite将Facebook数据(性别,出生日期,地址和生物)输入数据库

时间:2018-03-21 08:41:41

标签: php laravel facebook-graph-api facebook-php-sdk laravel-socialite

我创建了一个完整的代码,通过使用Laravel Socialite获取用户名,电子邮件和阿凡达的Facebook登录。

我是通过写这个来做到的:

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

但是为了将Gender,BirthDate和Address放在数据库中,我尝试了这个。

$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驱动程序的必要权限
public function redirect()
  {
      return Socialite::driver('facebook')->fields([
        'first_name', 'last_name', 'email', 'gender', 'birthday'
        ])->scopes([
            'email', 'user_birthday'
        ])->redirect();
  }

所有必要的东西,如数据库表,迁移,模型和没有Gender and Bio的工作项目已经准备就绪。但我需要在数据库中添加更多信息。我怎么能这样做?

我已经在StackOverflow上搜索了这些问题,但没有找到令人满意的答案。我希望有人能回答这个问题。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

Facebook的默认社交网站提供商没有获得性别和方法的方法生物。

有关详情,请点击此处查看可用的方法:

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

此StackOverflow可能会对您有所帮助:

How to get birthday gender and religion information using laravel socialite implementing facebook Api

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

 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( '性别')

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