Я использую Firebase SimpleLogin для активации аутентификации по электронной почте/паролю. Создание пользователей и последующий вход в систему работают нормально. Тем не менее, всякий раз, когда я покидаю приложение (даже если только на несколько секунд), пользователь никогда не войдет в систему по моему возврату i.e...
authClient.checkAuthStatus(new SimpleLoginAuthenticatedHandler())...
Всегда возвращает нулевого пользователя.
Я не выхожу из системы через API. Также я установил количество дней входа пользователя в систему 21 в консоли Firebase.
В JS-документах я упоминал о параметре mem-me, но я не вижу эквивалента для Android/Java.
Интересно, если я пропущу что-либо в документах или если это невозможно для Android?
Спасибо за вашу помощь,
Neil.
Изменить: добавлен образец кода.
Создание пользователя....
public void registerUserForChat(final MyApplication application, String email, String password) {
Firebase ref = new Firebase(FIREBASE_URL);
SimpleLogin authClient = new SimpleLogin(ref);
authClient.createUser(email, password, new SimpleLoginAuthenticatedHandler() {
@Override
public void authenticated(com.firebase.simplelogin.enums.Error error, User user) {
if(error != null) {
Log.e(TAG, "Error attempting to create new Firebase User: " + error);
}
else {
Log.d(TAG, "User successfully registered for Firebase");
application.setLoggedIntoChat(true);
}
}
});
}
Вход пользователя...
public void loginUserForChat(final MyApplication application, String email, String password) {
Log.d(TAG, "Attempting to login Firebase user...");
Firebase ref = new Firebase(FirebaseService.FIREBASE_URL);
final SimpleLogin authClient = new SimpleLogin(ref);
authClient.checkAuthStatus(new SimpleLoginAuthenticatedHandler() {
@Override
public void authenticated(com.firebase.simplelogin.enums.Error error, User user) {
if (error != null) {
Log.d(TAG, "error performing check: " + error);
} else if (user == null) {
Log.d(TAG, "no user logged in. Will login...");
authClient.loginWithEmail(email, password, new SimpleLoginAuthenticatedHandler() {
@Override
public void authenticated(com.firebase.simplelogin.enums.Error error, User user) {
if(error != null) {
if(com.firebase.simplelogin.enums.Error.UserDoesNotExist == error) {
Log.e(TAG, "UserDoesNotExist!");
} else {
Log.e(TAG, "Error attempting to login Firebase User: " + error);
}
}
else {
Log.d(TAG, "User successfully logged into Firebase");
application.setLoggedIntoChat(true);
}
}
});
} else {
Log.d(TAG, "user is logged in");
}
}
});
}
Поэтому метод loginUserForChat сначала проверяет, есть ли зарегистрированный пользователь и, если нет, выполняет вход в систему. Обратите внимание, что каждый раз, когда я запускаю приложение, запись, которую я вижу, это....
- Попытка входа в систему пользователя Firebase...
- Пользователь не выполнил вход. Войдите в систему...
- Пользователь успешно выполнил вход в Firebase
Если я выйду из приложения, даже на несколько секунд, и вернусь - я вижу тот же журнал.
Одна вещь, которую я заметил, это то, что вызов checkAuthStatus не принимает никаких учетных данных пользователя - я предполагаю, что он просто проверяет наличие локально зарегистрированного пользователя?
Большое значение.