Android上的Facebook Graph API有时不会返回电子邮件

时间:2016-01-23 07:39:14

标签: java android facebook facebook-graph-api facebook-android-sdk

我正在使用以下代码在登录后检索有关用户的更多信息,并且我正在使用Graph API,但问题是这个代码有时会返回有效的电子邮件,对于同一个用户,在其他情况下它不会返回另一个用户。不返回电子邮件可以被理解为可能是因为用户没有有效的电子邮件,但是有时用户工作,有时不工作。

 fbLoginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(final LoginResult loginResult) {

            GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {

                    JSONObject json = response.getJSONObject();
                    try {
                        if (json != null) {
                            String email = "";
                            if (json.isNull("email") == false) {
                                email = json.getString("email");
                            }
                            Log.d("email", email);

                        }

                    } catch (JSONException e) {
                        e.printStackTrace();

                    }
                }
            });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,link,email,picture");
            request.setParameters(parameters);
            request.executeAsync();

        }

感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:0)

经过一天的研究和一些代码,发现与上面的代码一起需要设置Facebook LoginButton对象的权限,如下所示,希望它可以帮助某人。上述代码也不是仅在验证电子邮件时才返回电子邮件,但如果帐户包含未经验证的电子邮件,则以上代码不会返回电子邮件。 在这种情况下添加以下代码

loginButton.setReadPermissions("email");