Facebook JS SDK的FB.api('/ me')方法不会返回我在Graph API v2.4 +中所期望的字段

我试图获得一些基本的信息使用Facebook的API,但到目前为止,我只得到用户的名称和ID。 如{ name: "Juan Fuentes", id: "123456" }

我需要获取电子信息,如电子邮件,名字,姓氏和生日

这是我的js代码

 function facebookLogin() { FB.login(function(response) { var token = response.authResponse.accessToken; var uid = response.authResponse.userID; if (response.authResponse) { FB.api('/me', 'get', { access_token: token }, function(response) { console.log(response); }); FB.api('/'+uid, 'get', { access_token: token }, function(response) { console.log(response); }); } }, { scope: 'public_profile' } ); } 

这是激活它的button

 <a id="fb-login" href="#" onclick="facebookLogin()"></a> 

自Graph API v2.4开始,您需要手动指定每个字段:

声明性字段
为了提高移动networking的性能,v2.4中的节点和边缘要求您明确地请求您的GET请求所需的字段。 例如,GET /v2.4/me/feed默认不再包含喜欢和评论,但GET /v2.4/me/feed?fields=comments,likes将返回数据。 有关更多详细信息,请参阅有关如何请求特定字段的文档。

例如

 FB.api('/me', 'get', { access_token: token, fields: 'id,name,gender' }, function(response) { console.log(response); }); 

对于来自public_profile作用域的数据,也可以使用这种语法(在Graph API v2.9中testing):

 FB.api('/me?fields=birthday,link,gender,age_range', function(response) { console.log(response); }); 

您可以在Graph API Explorer中在线testing可能的值,只需点击“Get Token”button:

https://developers.facebook.com/tools/explorer/?method=GET&path=me%3Ffields%3Dbirthday%2Clink%2Cgender%2Cage_range&version=v2.9