使用Socialite Laravel检索Facebook用户详细信息

3
我是使用 Laravel 5.4.36 版本,使用 Laravel Sociallite 插件 连接用户与 Facebook。
现在,我想获取已登录用户的信息,例如出生日期、性别、地址、手机号码或Facebook 官方文档中给出的任何权限。
我尝试了以下代码。
$facebookScope = [
        'user_birthday',
        'user_location',
];
$facebookFields = [
        'name', // Default
        'email', // Default
        'gender', // Default
        'birthday', // I've given permission
        'location', // I've given permission
];
return Socialite::driver('facebook')->fields($facebookFields)->scopes($facebookScope)->redirect();

现在当我点击使用Facebook按钮登录时,会显示以下错误:

无效的范围:user_birthday,user_location。此消息仅向开发人员显示。如果存在这些权限,则您的应用程序用户将忽略这些权限。请阅读文档以获取有效的权限https://developers.facebook.com/docs/facebook-login/permissions

我尝试了不同的范围,例如字段名称=age和范围=user_age_range,字段名称=birthday和范围名称=user_birthday,字段名称=friends和字段名称=user_friends。

但是,对于我使用的每个范围,都会出现无效范围的错误。 enter image description here

我是否做错了什么?我需要更改我为登录创建的Facebook应用程序中的某些内容吗?

请给予建议。


你的应用程序使用哪个API版本?请展示完整的登录对话框URL。 - CBroe
抱歉,请问我在哪里可以检查应用程序版本?我参考了https://appdividend.com/2017/07/12/laravel-facebook-login/。 - Shashank Shah
4个回答

14

好的,结果表明这与评论相关-即使只是间接相关。

现在您需要将应用程序设置为“dev”模式,以便甚至可以向具有应用程序角色的人请求这些权限。

一旦您将其设置为“live”,即使您使用管理员或开发人员帐户进行测试,也会显示“无效范围”错误。

在这方面,错误消息的措辞有点误导/不太幸运。


谢谢!我已将应用程序模式从生产模式设置为开发模式!除此之外,我在我的开发者账户下创建了测试用户,并授予他们所有权限,现在我能够获取所有权限。 - Shashank Shah
你能否查看一下这个链接?https://stackoverflow.com/questions/51056070/get-uploaded-pictures-of-authenticated-user-facebook-socialite-laravel - Shashank Shah
为什么Facebook不直接说清楚,而非给出那种毫无用处的错误信息?这就像是默认你已经知道一样。 - Reado

1

1
你需要在Facebook应用程序页面明确声明所需的范围。打开https://developers.facebook.com/apps/仪表板,转到应用程序审核并提交所需范围的项目。之后,您需要遵守Facebook的要求,通常涉及登录流程和功能使用的屏幕截图。
请注意,此过程需要相当长的时间。我创建的一些应用程序计划于8月初进行审核。

@ShashankShah 是的。根据我的经验,由于这些原因,它已经停止检索我声明的范围。 - Charis
@CBroe 哦,好的。那好吧,那是我的错。 - Charis
你知道与测试用户相关的内容吗?在Facebook开发者账户下的角色部分-> 您可以通过权限添加测试用户。 - Shashank Shah
@ShashankShah 是的,您可以添加测试用户。您可以通过 Graph API 创建一个测试用户。它们具有像真实用户一样的访问令牌和权限。在自动化测试场景中非常有用。请查看 https://developers.facebook.com/docs/apps/test-users。 - Charis
1
看来你是对的 - 看起来与审核有关,现在他们甚至更加限制了这一点,因此您的应用程序需要处于开发模式,否则即使是应用程序中具有角色的人也不能再被要求获得这些未经审核的权限。 - CBroe
显示剩余2条评论

1
"

user_birthday, user_location, user_friends 还有很多其他需要 Facebook 审核后才能向公众用户提供的权限。但是,您可以在开发者和测试用户帐户中使用这些权限。

"

https://developers.facebook.com/docs/apps/review/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接