在记录成功后没有从facebook收到电子邮件,它只给出了名字

时间:2017-12-27 11:05:36

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

callbackManager = CallbackManager.Factory.create();  
fbLoginButton.setReadPermissions("email");
        fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

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

                            Toast.makeText(getApplicationContext(), "Data" + object.toString(), Toast.LENGTH_LONG).show();

                            etEmail.setText(object.optString("email"));
                            etName.setText(object.optString("name"));


                        }
                    }).executeAsync();

        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }
    });


    buttonFbSignup.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            fbLoginButton.performClick();
        }
    });

2 个答案:

答案 0 :(得分:0)

您设置了email权限(并希望在登录弹出窗口中获得该权限),但没有API请求该电子邮件。确保您知道“声明字段”的含义,这将是获取用户电子邮件的api调用:/me?fields=email

有关于如何在官方文档中执行API调用的示例代码,请专门查看fields参数:https://developers.facebook.com/docs/android/graph

例如,这应该返回用户的ID,名称和电子邮件 - 只要email权限在登录过程中获得授权,并且只要在Facebook上确认电子邮件:

GraphRequest request = GraphRequest.newMeRequest(
        accessToken,
        new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(
                   JSONObject object,
                   GraphResponse response) {
                // Application code
            }
        });
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
request.executeAsync();

您还应该阅读整个页面,它解释了fields参数等等:https://developers.facebook.com/docs/graph-api/using-graph-api/

答案 1 :(得分:0)

错误是我的电子邮件未在Facebook注册


如果您真的被要求在登录过程中获得电子邮件许可,并且仍然没有电子邮件...请确保您甚至通过电子邮件登录facebook。例如,人们也可以使用电话号码登录。