2013-08-22 116 views
8

UPDATE似乎我的个人电子邮件地址多年来一直未使用。 Facebook将其标记为不活动,并没有将其作为JSON的一部分返回。Facebook Graph不返回电子邮件

https://www.facebook.com/dialog/oauth? 
    client_id=xxx& 
    redirect_uri=https://www.facebook.com/connect/login_success.html& 
    scope=email 

我收到一个代码,然后我换一个令牌:

https://graph.facebook.com/oauth/access_token? 
    code=xxx& 
    client_id=xxx& 
    client_secret=xxx& 
    redirect_uri=xxx 

我然后发送令牌

我在客户端使用此URL验证与Facebook用户我的服务器和我获取Fb图表,以获得一些用户信息,包括电子邮件。

https://graph.facebook.com/me?access_token=xxx 

出于某种原因,我得到“关于”信息中的所有用户,但不他/她的电子邮件

我做错了什么?

+1

看吧:HTTP://计算器.com/questions/9347104/register-with-facebook-sometimes-doesnt-provide-email –

+0

我使用我自己的Facebook帐户进行测试,并且我注册的地址在多年内还没有使用过!这很可能是原因。 –

+0

如果您使用2.4版,那么您必须在字段= ...变量(以及任何其他公共配置文件字段)中请求电子邮件。否则/我会给你只是名称和编号 – PalDev

回答

5

按照Facebook Documentation

默认情况下,而不是在一个节点或边缘的所有字段将返回当你 进行查询。您可以选择要使用“字段”查询参数返回 的字段(或边)。这对于使您的API调用更高效和更快速地生成 非常有用。

这是从v2.4有效,(以前的版本检索一些默认字段)。

当您注册一个新应用程序时,您有权自动授予(无需手动审核)三个权限:电子邮件,public_profile和user_friends。在您的代码“电子邮件”在范围上(这是好的),所以只要改变你的查询:

https://graph.facebook.com/me?access_token=xxx&fields=email 

你可能希望你在API的早期版本中自动获得了public_profile领域。这样做的话,加上 “public_profile” 到你的范围:

https://www.facebook.com/dialog/oauth? 
    client_id=xxx& 
    redirect_uri=https://www.facebook.com/connect/login_success.html& 
    scope=email,public_profile 

现在添加用户名字段查询:

https://graph.facebook.com/me?access_token=xxx&fields=first_name,last_name,gender,email,timezone,age_range,verified 

好运

+1

我也曾用名字作为一个很多,这使得难以识别具有多个空格的国际名字的名字和姓氏。我遵循你的方法来获得单独的姓和名,并想到分享它以防止他人帮忙。 **/me?fields = email,first_name,last_name ** – Kareem

+0

所有/我(public_profile)引用可以在这里找到https://developers.facebook.com/docs/facebook-login/permissions#reference-public_profile – Kareem

相关问题