我有工作代码来获取除电子邮件之外的用户信息。这是我的请求代码:
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的截图。即使有朋友名单我也没有得到许可。在我的图表上,仍然没有电子邮件。答案 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
权限再次获得授权。