Я использую AuthStateListener
в своем приложении. Я использую почти аналогичный код для идентификации нового / существующего пользователя, как указано в FirebaseUI docs .
public static boolean isNewUser() {
FirebaseUserMetadata metadata = mCurrentUser.getMetadata();
long creation = metadata.getCreationTimestamp();
long lastSignIn = metadata.getLastSignInTimestamp();
return creation == lastSignIn;
}
Однако существует проблема. После первого входа пользователя этот метод продолжает возвращать true
, то есть и getCreationTimestamp()
и getLastSignInTimestamp()
возвращают одно и то же значение, пока я не вызову AuthUI.getInstance().signOut(this);
и не заставлю пользователя войти снова.
Но как мы знаем, выход пользователя из приложения - это редкое событие; Кроме того, нецелесообразно выходить из него каждый раз, когда он покидает приложение. Я ожидал, что когда AuthStateListener
изменит состояние, указав, что пользователь выполнил вход, оно должно обновить отметку времени.
Как заставить это работать? Каковы лучшие практики здесь?