您好,我正在使用新的 Facebook Android SDK。我不知道的一件事是我如何要求电子邮件地址。我尝试了以下操作,但它返回了除电子邮件地址之外的所有字段的值。我想我可能需要单独请求电子邮件地址的许可,但不确定如果我使用 LoginFragment 该怎么做。
Request request = Request.newMeRequest(session, new GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
profilePictureView.setUserId(user.getId());
userNameView.setText(user.getName());
}
});
String NAME = "name";
String ID = "id";
String PICTURE = "picture";
String EMAIL = "email";
String FIELDS = "fields";
String REQUEST_FIELDS = TextUtils.join(",", new String[] {
ID, NAME, PICTURE, EMAIL
});
Bundle parameters = new Bundle();
parameters.putString(FIELDS, REQUEST_FIELDS);
request.setParameters(parameters);
Request.executeBatchAsync(request);
感谢任何帮助。 谢谢
最佳答案
执行以下操作:
如上设置权限后,通过以下方式访问电子邮件: user.asMap().get("email"));
请看下面的例子
@Override
protected void onSessionStateChange(SessionState state, Exception exception) {
// user has either logged in or not ...
if (state.isOpened()) {
// make request to the /me API
Request request = Request.newMeRequest(this.getSession(),
new Request.GraphUserCallback() {
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user,
Response response) {
// TODO Auto-generated method stub
if (user != null) {
TextView etName = (TextView) findViewById(R.id.etName);
etName.setText(user.getName() + ","
+ user.getUsername() + ","
+ user.getId() + "," + user.getLink()
+ "," + user.getFirstName()+ user.asMap().get("email"));
}
}
});
Request.executeBatchAsync(request);
}
}
关于android - 使用新的 Facebook Android SDK 访问用户电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13205517/