我想要用户登录时的其他字段,如 user_location
现在我开始知道我需要提交一个应用以供审核,以便获得批准用于获取用户位置。 Facebook也已经批准了它。
现在我正在尝试使用以下代码获取:
$this->socialite->driver($provider)->scopes(['user_location', 'user_hometown'])->redirect()
但是当我抛弃它时:
$this->socialite->driver($provider)->user();
它没有在用户数据数组中提供user_location。但是,当我第一次尝试登录时,facebook要求获得许可。
这是我得到的数据:
User {#330 ▼
+token: "xxxxxxxxxx"
+refreshToken: null
+expiresIn: "xxxxx"
+id: "xxxxxx"
+nickname: null
+name: "xxxxxx"
+email: "xxxxxx@xx.com"
+avatar: "xxxxxx"
+user: array:5 [▶]
+"avatar_original": "xxxxxxxx"
}
所以我可以知道,我做错了什么,以及如何获得用户位置。
提前谢谢你们
答案 0 :(得分:2)
您可以在重定向方法中使用fields()方法来设置其他字段,并在以后的应用程序中使用它们。
public function redirectToFacebook()
{
return $this->socialite->driver($provider)->fields([
'first_name', 'last_name', 'email', 'gender','location'
])->scopes([
'user_location'
])->redirect();
}
然后用以下方式访问它们:
public function handleFacebookCallback()
{
$providerUser = $this->socialite->driver($provider)->fields([
'first_name', 'last_name', 'email', 'gender', 'birthday','location'
])->user();
dd($providerUser);
}
请注意,字段()将覆盖默认值,因此在上面的示例中,您无法获得"已验证"和"链接"用户的属性。