Android 登录成功后没有收到facebook的电子邮件,它只是给出了名字 callbackManager=callbackManager.Factory.create(); fbLoginButton.setReadPermissions(“电子邮件”); registerCallback(callbackManager,newfacebookcallback()){ @凌驾 成功时公共无效(LoginResult LoginResult){ GraphRequestStatSyncTask请求=GraphRequest.NewMereRequest(loginResult.getAccessToken(), 新建GraphRequest.GraphJSONObjectCallback(){ @凌驾 未完成公共无效(JSONObject对象,GraphResponse响应){ Toast.makeText(getApplicationContext(),“Data”+object.toString(),Toast.LENGTH_LONG).show(); setText(object.optString(“电子邮件”)); setText(object.optString(“name”)); } }).executeAsync(); } @凌驾 公开作废{ } @凌驾 public void onError(facebook异常错误){ } }); buttonFbSignup.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ fbLoginButton.performClick(); } });

Android 登录成功后没有收到facebook的电子邮件,它只是给出了名字 callbackManager=callbackManager.Factory.create(); fbLoginButton.setReadPermissions(“电子邮件”); registerCallback(callbackManager,newfacebookcallback()){ @凌驾 成功时公共无效(LoginResult LoginResult){ GraphRequestStatSyncTask请求=GraphRequest.NewMereRequest(loginResult.getAccessToken(), 新建GraphRequest.GraphJSONObjectCallback(){ @凌驾 未完成公共无效(JSONObject对象,GraphResponse响应){ Toast.makeText(getApplicationContext(),“Data”+object.toString(),Toast.LENGTH_LONG).show(); setText(object.optString(“电子邮件”)); setText(object.optString(“name”)); } }).executeAsync(); } @凌驾 公开作废{ } @凌驾 public void onError(facebook异常错误){ } }); buttonFbSignup.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ fbLoginButton.performClick(); } });,android,facebook,facebook-graph-api,facebook-android-sdk,Android,Facebook,Facebook Graph Api,Facebook Android Sdk,您设置了电子邮件权限(希望在登录弹出窗口中得到请求),但没有API调用请求该电子邮件。确保您知道“声明性字段”的含义,这将是获取用户电子邮件的api调用:/me?fields=email 官方文档中有关于如何进行API调用的示例代码,请具体查看字段参数: 例如,这应该返回用户的id、姓名和电子邮件-只要电子邮件在登录过程中获得授权,并且只要电子邮件在Facebook上得到确认: callbackManager = CallbackManager.Factory.create(); fbLog

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

官方文档中有关于如何进行API调用的示例代码,请具体查看
字段
参数:

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

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();
        }
    });

您还应该阅读整个页面,它解释了字段参数和更多信息:

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



如果您在登录过程中确实被要求获得电子邮件权限,但仍然没有电子邮件…请确保您甚至使用电子邮件登录facebook。它实际上不必存在,例如,人们也可以使用电话号码登录。

我已经正确集成了facebook sdk,但未成功获取电子邮件您设置了电子邮件权限(希望在登录弹出窗口中获得请求),但没有api调用请求电子邮件。请确保您知道“声明性字段”的含义,这将是获取用户电子邮件的api调用:/me?fields=email请帮助我如何做到这一点?我是新手,我也这么做了,但我只获取id和名称。如果可以,请帮助我。您是否确实在登录对话框中被请求电子邮件权限?是否调试了api调用的响应?你是怎么调试的?您认识到您的代码和我的代码示例在字段参数方面的差异吗?GraphRequest request=GraphRequest.NewMereRequest(loginResult.getAccessToken(),new GraphRequest.GraphJSONObjectCallback(){@Override public void onCompleted(JSONObject对象,GraphResponse响应){//应用程序代码Toast.makeText(getApplicationContext(),“Data”+object.toString(),Toast.LENGTH_LONG).show();字符串uname=object.optString(“名称”);字符串user_email=response.getJSONObject().optString(“电子邮件”);etName.setText(uname);etEmail.setText(user_email);});
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();