Facebook Graph API v2.4不返回扩展的用户数据

Top*_*unt 2 facebook-graph-api

我正在开发一个使用Facebook Graph API实现FB身份验证集成的应用程序.作为其中一部分,我们从Facebook获取用户的电子邮件,first_name和last_name,以便我们可以将电子邮件地址与我们数据库中的现有用户匹配,或者创建一个失败的新用户.

在Graph版本2.3中,我们可以使用以下请求轻松获取此信息,您可以在Graph API Explorer中测试运行,假设我们提供了具有权限的访问令牌,user_about_me并且email:

Request: https://graph.facebook.com/v2.4/10154900171335022
Response: 
{
  "id": "123456",
  "email": "buckeroo.banzai@gmail.com",
  "first_name": "Buckeroo",
  "gender": "male",
  "last_name": "Banzai",
  "link": "https://www.facebook.com/app_scoped_user_id/123456/",
  "locale": "en_US",
  "name": "Buckeroo Banzai",
  "timezone": -4,
  "updated_time": "2015-06-06T07:21:23+0000",
  "verified": true
}
Run Code Online (Sandbox Code Playgroud)

但是当我切换到API v2.4并尝试相同的请求时,即使我启用了所有权限,我也会得到以下无用的响应:

{
  "name": "Topher Hunt",
  "id": "10154900171335022"
}
Run Code Online (Sandbox Code Playgroud)

这与FB的API文档不匹配,这表明完整数据(包括电子邮件)仍应按照v2.3中的原样返回.

使用FB Graph v2.4时,有没有人成功找到获取用户电子邮件地址的方法?任何解决方法?也许我应该推迟升级?

提前致谢!

Nis*_*dke 9

您应该使用相关的权限关键字传递'fields'参数.请注意,自Graph API 2.2及更高版本发布以来,用户可以拒绝特定数据字段的权限.

除此之外,如果用户已使用电话号码注册,则电子邮件字段将返回为NULL.

要通过HTTP访问电子邮件和关于我的用户,以下是一个示例:

https://graph.facebook.com/v2.4/10154900171335022?fields=email,about

Javascript中的一个例子.

     FB.login(function(response) {
               if(response.authResponse) { //If the user grants permission
                         FB.api('/me?fields=email,about', function(response) {
                           console.log(response.email);
                           console.log(reponse.about);
                         });
               } else {
                                // User cancelled login or did not fully authorize.
               }
    }, {
        scope: 'email,user_about_me'
    );
Run Code Online (Sandbox Code Playgroud)