从android facebook sdk获取电子邮件

时间:2014-03-31 06:47:56

标签: android facebook email facebook-android-sdk

我有工作代码来获取除电子邮件之外的用户信息。这是我的请求代码:

private void requestLoginFb() {  
    Session session = Session.getActiveSession();  
    if (!session.isOpened() && !session.isClosed()) {
        session.openForRead(new Session.OpenRequest(this).setPermissions(
                Arrays.asList("basic_info", "email")).setCallback(
                fbCallback));
    } else {
        Session.openActiveSession(act, true, fbCallback);
    }
}

这里我获取用户信息

Request.executeMeRequestAsync(session,
    new Request.GraphUserCallback() {
    @Override
    public void onCompleted(GraphUser user, Response response) {
        if (null != user) {
            C.trace("user name: " + user.getName());
            C.trace("user gender: " + user.asMap().get("gender"));
        }
    }
});  

我的图表结果没有电子邮件:

GraphObject{graphObjectClass=Map, state={"id":"10000xxxxxxx","first_name":"xxxx","username":"xxxxxx","timezone":x,"locale":"en_US","link":"https:\/\/www.facebook.com\/xxxxxx","name":"xxxxx","last_name":"xxxxx","gender":"male","education":[{"type":"xxxx","school":{"id":"xxxxx","name":"xxxxx"}}],"updated_time":"xxxxxxx"}}  

我担心我的许可方式。然后我把基本信息和电子邮件放在会话上。我不知道这是否正确。

更新

这是请求facebook的截图。即使有朋友名单我也没有得到许可。在我的图表上,仍然没有电子邮件。
enter image description here

3 个答案:

答案 0 :(得分:1)

这是众所周知的问题.....对于某些帐户,即使代码正确,Facebook也不想回复电子邮件。你可以尝试其他账户吗?

答案 1 :(得分:0)

要从Facebook收到电子邮件,请尝试以下内容。

String email = user.asMap().get("email").toString();
Textview mEmail = (TextView) findViewById(R.id.textView1);
mEmail.setText(email);

通过使用上面的代码,我成功地获得了facebbok用户的电子邮件。尝试一下,如果您仍然遇到任何问题,请告诉我。

答案 2 :(得分:0)

我认为您在授权一次后添加了权限。因此,请点击修改,查看您为此应用here提供的所有权限。

如果您发现未设置email权限,则可以从设置中注销应用/删除应用,然后重新登录;这样您就可以使用email权限再次获得授权。