Android Facebook API - 我只收到一些fb帐户的电子邮件

时间:2015-12-13 21:48:59

标签: android facebook facebook-graph-api

我现在一直在使用Facebook SDK for Android。我的一位测试人员无法使用Facebook在我的应用中创建帐户时遇到了麻烦。经过一些调试后,我发现由于某种原因,当他试图登录/注册包含该信息的JSON对象时,他的电子邮件没有。这只适用于HIS帐户!

有谁知道为什么会发生这种情况?

(我已经包含了我的登录代码的简化版本,因此您可以查看它是否存在任何可能导致错误的错误)

List<String> permissionNeeds = Arrays.asList("public_profile", "user_friends", "email");
loginButton.setReadPermissions(permissionNeeds);

loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(final LoginResult loginResult) {
        GraphRequest request = GraphRequest.newMeRequest(
                loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        try {
                            Log.d(TAG, object.toString()); // Has no email sometimes!
                        } catch (JSONException e) {
                            e.printStackTrace();
                            Log.e(TAG, String.format("Error with facebook login: %s", e.getMessage()));
                        }
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,picture,email,gender");
        request.setParameters(parameters);
        request.executeAsync();
    }

    @Override
    public void onCancel() {
    }

    @Override
    public void onError(FacebookException error) {
        Log.d(TAG, String.format("Error with facebook login: %s", error.getMessage()));
    }
});

loginButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        LoginManager.getInstance().logInWithReadPermissions(SplashActivity.this,
                Arrays.asList("public_profile", "user_friends", "email"));
    }
});

如果需要更多信息,请告诉我,我很乐意添加一些信息。

谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明我的测试人员有一个非活动的电子邮件帐户。

一般情况下,您永远不应指望每个拥有电子邮件地址的Facebook用户。