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 からメールを取得したいのですが、ログイン メソッドが実行されず、コールバックからメール (変数) を使用しようとすると、メールの最初の値が取得されますか?? どうすればこの問題を解決できますか!! ありがとう

4

1 に答える 1

0

変数はコード スニペットに含まれてemailいないため、ネストされた無名関数の外から取得されたに違いありません。これは、変数を宣言する必要があり、コードで値をリセットできなかったことを意味します。new FacebookCallback<LoginResult>()new GraphRequest.GraphJSONObjectCallback()finalemail=object.getString("email");

代わりにローカル変数を使用する必要があります。

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