Facebook会话对象有"电子邮件"权限但Request.executeMeRequestAsync(...)不返回任何电子邮件

时间:2013-06-06 19:39:33

标签: android facebook-android-sdk

我正在重写一个应用程序以包含Facebook登录,我想获取用户的电子邮件地址。我已经在Session对象中请求了权限并仔细审查它我可以看到它确实拥有此权限。但是,当我打电话时

Request.executeMeRequestAsync(session, this);
来自StatusCallback#call(...)方法的

(父Activity实现此回调和其他回调)我没有收到电子邮件地址。

@Override
public void onCompleted(GraphUser user, Response response) {
    Object emailObject = user.asMap().get("email"); //this is null
    //...
}

此外,请致电

Request.executeGraphPathRequestAsync(session, "me?fields=email", this);

给了我一个OAuthException,虽然我使用的是成功获取用户的Session

我已经检查了Session#getPermissions()并且我拥有电子邮件权限。为什么我没有收到电子邮件?

1 个答案:

答案 0 :(得分:1)

这里描述了这个问题:

https://developers.facebook.com/bugs/482815835078469/

其中一位评论者MaiKhánh写道:

  

我发现为什么会发生这种情况,请竖起大拇指以便能够注意到支持团队。

     

1 /转到此链接:https://www.facebook.com/settings?tab=account&section=email&view

     

2 /查看主电子邮件编辑表单,如果默认情况下未选中单选按钮,则会出现错误。

     

我认为这是因为Facebook系统有时会因Facebook帐户有超过1封电子邮件而引起混淆。

     

我的临时解决方案:向该帐户添加更多随机电子邮件 - >表单将要求您选择主电子邮件 - >选择主电子邮件 - >填写通行证,然后提交 - >完成。

     

关键是,如果您只是在不添加其他随机电子邮件的情况下检查主帐户,那么当完成所有操作后,您将返回 - >编辑表单仍未检查任何主电子邮件。

这很有用。这是Facebook的错误。