Я хочу удалить анонимную учетную запись в моей базе данных аутентификации 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;
}
}
}
});