我创建了一个完整的代码,通过使用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
public function redirect()
{
return Socialite::driver('facebook')->fields([
'first_name', 'last_name', 'email', 'gender', 'birthday'
])->scopes([
'email', 'user_birthday'
])->redirect();
}
所有必要的东西,如数据库表,迁移,模型和没有Gender and Bio的工作项目已经准备就绪。但我需要在数据库中添加更多信息。我怎么能这样做?
我已经在StackOverflow上搜索了这些问题,但没有找到令人满意的答案。我希望有人能回答这个问题。
提前谢谢。
答案 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可能会对您有所帮助:
除了在重定向中获取范围之外,您还需要在回调中传递它们
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
这些方法可以帮助从用户数组中获取额外信息