соединение с Facebook в порядке, но я потерял данные, когда вернулся на MainActivity - PullRequest
0 голосов
/ 07 марта 2019

Я собираюсь разработать приложение для Android, и я пытаюсь разделить вещи .... Я создал класс FacebookConnect для вызова API Facebook для извлечения общедоступной информации Facebook, чтобы использовать ее позже, но мой объект пуст, когда я вернулся в свой основной класс Java.

Любая идея ... мои знания средние в этой области навыков.

Это моя функция в FacebookConnect

public void getConnectionWithFacebook(Activity myActivity, CallbackManager mCallbackManager){
    MCALLBACKMANAGER = mCallbackManager;
    MYACTIVITY = myActivity;
    ONEUSER = new User();

    LoginManager.getInstance().logInWithReadPermissions(MYACTIVITY, Arrays.asList("email", "public_profile"));
    LoginManager.getInstance().registerCallback(MCALLBACKMANAGER, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.d(TAG,"facebookSuccess3 -> " + loginResult.toString());
            // App code
            GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    Log.d(TAG,"facebookSuccess4 -> " + response.toString());
                    getDataFromFacebook(object);
                }
            });
            Bundle parameters = new Bundle();
            parameters.putString("fields","id,email,first_name,last_name");
            request.setParameters(parameters);
            request.executeAsync();
        }

        @Override
        public void onCancel() {
            Log.d(TAG,"facebook -> " + "onCancel");
            Toast.makeText(MYACTIVITY, "Une erreur s'est produite, veuillez réessayer plus tard...", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onError(FacebookException error) {
            Log.d(TAG,"facebookONError -> " +error.toString());
            Toast.makeText(MYACTIVITY, "Une erreur s'est produite, veuillez réessayer plus tard...", Toast.LENGTH_LONG).show();
            // ...
        }
    });
}

В моем основном классе я буду вызывать эту функцию внутри этого события клика:

btnFBLogin.setOnClickListener(new View.OnClickListener() {
        FacebookConnect oneConnection = new FacebookConnect();
        @Override
        public void onClick(View v) {
            btnFBLogin.setEnabled(false);
            oneConnection.getConnectionWithFacebook(MainActivity.this, mCallbackManager);
            String email = oneConnection.getEmail();
            Log.d(TAG,"handleFacebookToken1 -> " + email); // doesnt work
        }
    });

К сожалению, результат нулевой или пустой, и я не знаю почему.

Редактировать:

Это моя функция для привязки данных из facebook к моему классу:

public void getDataFromFacebook(JSONObject object) {
    try{
        String emailJSON = object.getString("email");
        String fristNameJSON = object.getString("first_name");
        String lastNameJSON = object.getString("last_name");

        Log.d(TAGUSER,"facebookSuccess -> " + emailJSON);
        Log.d(TAGUSER,"facebookSuccess -> " + fristNameJSON);
        Log.d(TAGUSER,"facebookSuccess -> " + lastNameJSON);

        //Log.d(TAGUSER,"facebookSuccess -> " + object.getString("email"));
        // Log.d(TAGUSER,"facebookSuccess -> " + object.getString("first_name"));
        //Log.d(TAGUSER,"facebookSuccess -> " + object.getString("last_name"));
        this.setEmail(emailJSON);
        this.setFirstName(fristNameJSON);
        this.setLastName(lastNameJSON);

        Log.d(TAGUSER,"facebookSuccess -> " + getEmail());
        Log.d(TAGUSER,"facebookSuccess -> " + getFirstName());
        Log.d(TAGUSER,"facebookSuccess -> " + getLastName());

    } catch (JSONException e) {
        e.printStackTrace();
    }
}

Я много чего кладу, чтобы увидеть, что происходит с данными

Спасибо еще раз!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...