0



//代码

      callback = new FacebookCallback<LoginResult>() {
        Profile profile;
        @Override
        public void onSuccess(LoginResult loginResult) {
             profile = Profile.getCurrentProfile();
            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {

                            // Application code
                            try {
                                email=object.getString("email");
                                login(email,profile.getId());

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "email");
            request.setParameters(parameters);
            request.executeAsync();

            nextActivity();
        }
        @Override
        public void onCancel() {
        }

        @Override
        public void onError(FacebookException e) {
        }
    };
public void login(String email,String password){
    editor.putBoolean("islogin",true);
    editor.putString("email", email);
    editor.putString("password",password);
    editor.commit();
}

我想从 FacebookCallback 获取电子邮件,但登录方法没有执行,当我尝试在回调中使用 email(variable) 时,我得到了 email 的第一个值?我怎么解决这个问题 !!谢谢

4

1 回答 1

0

由于email变量不在代码片段中,它必须来自嵌套匿名函数的外部:new FacebookCallback<LoginResult>()new GraphRequest.GraphJSONObjectCallback()意味着它必须被声明final,因此无法在您的代码中重置该值:email=object.getString("email");

您应该改用局部变量:

try {
  String userEmail =object.getString("email");
  login(userEmail,profile.getId());
}
于 2016-09-07T22:34:33.530 回答