我正在使用laravel 5.4.36版,并且正在使用Laravel Sociallite plugin将用户与Facebook连接起来。
现在,我要获取此Facebook官方文档中提供的登录用户信息,例如生日,性别,地址,手机号码或any permissions。
我尝试了以下代码
$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
我尝试了不同的范围,例如字段名称=年龄和范围= user_age_range 字段名称=生日,范围名称= user_birthday,字段名称=朋友,字段名称= user_friends
我做错什么了吗?我需要在为登录创建的Facebook应用程序中更改某些内容吗?
请提出建议。
答案 0 :(得分:8)
好吧,事实证明这毕竟与评论有关-只是间接的。
您现在需要将应用程序设置为“开发”模式,以便甚至向具有该应用程序角色的人询问这些权限。
将其设置为“实时”后,即使您正在使用管理员或开发者帐户进行测试,也会显示“无效范围”错误。
在这方面,错误消息的措词有点误导/倒霉。
答案 1 :(得分:1)
您需要在facebook应用程序页面上明确声明所需的范围。打开https://developers.facebook.com/apps/信息中心,转到应用程序审查并提交您需要确定范围的项目。之后,您需要遵守facebook的要求,通常涉及登录流程和功能使用情况的屏幕截图。
请注意,此过程需要相当长的时间。我创建的某些应用计划于8月初进行审核。
答案 2 :(得分:1)
user_birthday
,user_location
,user_friends
,还有许多其他范围需要从Facebook进行审查,然后才能向公众用户提供。但是,您可以将这些范围用于开发人员和测试用户帐户。