Firebase Anonymous Authentication - та же проблема ссылочного объекта - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу удалить анонимную учетную запись в моей базе данных аутентификации Firebase при входе в систему с неанонимными учетными записями (Google Login, Facebook, et c).

В моем коде ниже, когда пользователь открывает приложение Анонимная учетная запись успешно создается, и я установил для анонимного объекта FirebaseUser значение firebaseUserAnonymous.

Но при входе в систему с учетной записью Google uidOld и uidNew идентификаторы одинаковы каждый раз!

Таким образом, я отлаживаю свой код и вижу onAuthStateChanged метод FirebaseUser объекта и перед тем, как установить firebaseUserAnonymous объект такой же!

, если (firebaseUserAnonymous != null && !uidNew.equals(uidOld)) никогда не вызывается, потому что новый firebaseUser объект и старый firebaseUserAnonymous объект всегда одна и та же ссылка ?

Так что метод onAuthStateChanged всегда использует один и тот же объект при новом анонимном входе или входе в Google.

Как можно Я удаляю старый FirebaseUser анонимный объект, когда пользователь входит в систему с помощью входа в Google?

private FirebaseUser firebaseUserAnonymous;

FirebaseAuth.getInstance().addAuthStateListener(new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();

        if (firebaseUser == null) {//When first open or logout
            FirebaseAuth.getInstance().signInAnonymously();
        } else {
            String uidOld = firebaseUserAnonymous != null ? firebaseUserAnonymous.getUid() : null;
            String uidNew = firebaseUser.getUid();

            if (firebaseUserAnonymous != null && !uidNew.equals(uidOld)) {//Must be call when user login after google login for delete old anonymous account, but never calling
                firebaseUserAnonymous.delete();
            }

            if (firebaseUser.isAnonymous()) {
                firebaseUserAnonymous = firebaseUser;
            }
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...