我一直在争论这个问题。我希望在使用Facebook登录按钮后阅读用户的电子邮件。这是我的代码
loginButton.setReadPermissions(Arrays.asList("email"));
loginButton.setSessionStatusCallback(new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
Log.i(TAG, "Access Token: " + session.getAccessToken());
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user,
Response response) {
if (user != null) {
Log.d(TAG,
""
+ user.asMap().get("email")
+ " is connected using facebook");
}
}
});
}
}
});
但在批准该应用时,我甚至都没有被要求提供电子邮件许可。因此,我没有在用户JSON ...
中收到“email”有什么想法吗?
答案 0 :(得分:0)
试试这个:
user.asMap().get("email");
上面的代码应该是GraphUser
并将其转换为Java Collections Map
。现在,您使用get()
参数调用"email"
方法,该参数将在地图中查找电子邮件字段并返回一个(如果存在)。有关GraphObjects
的更多信息,请Reference this link。 And this similar question了解有关如何获取用户电子邮件的详细信息。