如何通过Facebook Android sdk 4.0中的图表请求获取登录的用户的电子邮件地址 [英] How to get the logged user's email address with Graph Request in Facebook Android sdk 4.0
问题描述
一旦他用Facebook(sdk 4.0)登录到我的Android应用程序,我试图获取用户的电子邮件地址。我读了很多帖子,问同样的事情,但我仍然无法使其工作。我只需使用代码
I'm trying to get the user's email address once he's logged into my Android app with Facebook (sdk 4.0). I've read many posts asking the same thing but I still couldn't make it work. I simply log the user in with the code
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends", "email"));
然后我用Graph API请求与
Then I make the Graph API request with
LoginManager.getInstance().registerCallback(fbCallbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
System.out.println(loginResult.getAccessToken().toString());
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
System.out.println(object.toString());
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "email");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
输出只是
{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[public_profile, contact_email, user_friends, email, basic_info]}
{"id":"xxxxxxxxxxxxxxx"}
即使我删除了fields部分,我得到一个JSON用户的一些公共信息,但从来没有电子邮件字段。我正在自己的Facebook帐户进行测试,我确实有一个与之相关联的电子邮件地址。
Even if I remove the "fields" part, I get a JSON with a bunch of the user's public info, but never the email field. I'm testing this on my own Facebook account, and I do have an email address associated to it.
推荐答案
记录的用户电子邮件如下,但请注意,
You can get the logged user email as follows , But note that ,
-
他们不保证您会收到一封电子邮件地址阅读这里。
在某些情况下,尽管用户提供了一封电子邮件,但如果电子邮件无效,则不会通过请求。
In some cases, though user has provided an email, it will not come through request, if the email is not valid.
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest( AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
try {
String email=object.getString("email");
Log.d(TAG + "user email ", email);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
request.executeAsync();
}
这篇关于如何通过Facebook Android sdk 4.0中的图表请求获取登录的用户的电子邮件地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!