使用社交名流Laravel检索Facebook用户详细信息

时间:2018-06-21 09:38:21

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

我正在使用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

对于我使用的每个范围,我都会收到无效范围的错误。 enter image description here

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

请提出建议。

3 个答案:

答案 0 :(得分:8)

好吧,事实证明这毕竟与评论有关-只是间接的。

您现在需要将应用程序设置为“开发”模式,以便甚至向具有该应用程序角色的人询问这些权限。

将其设置为“实时”后,即使您正在使用管理员或开发者帐户进行测试,也会显示“无效范围”错误。

在这方面,错误消息的措词有点误导/倒霉。

答案 1 :(得分:1)

您需要在facebook应用程序页面上明确声明所需的范围。打开https://developers.facebook.com/apps/信息中心,转到应用程序审查并提交您需要确定范围的项目。之后,您需要遵守facebook的要求,通常涉及登录流程和功能使用情况的屏幕截图。

请注意,此过程需要相当长的时间。我创建的某些应用计划于8月初进行审核。

答案 2 :(得分:1)

user_birthdayuser_locationuser_friends,还有许多其他范围需要从Facebook进行审查,然后才能向公众用户提供。但是,您可以将这些范围用于开发人员和测试用户帐户。

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