Firebase Android Auth объект не вызывает обратные вызовы

Я проходил через Firebase docs, чтобы настроить систему аутентификации пользователей в приложении для Android. По какой-то причине, однако, это не похоже, что какой-либо из обратных вызовов работает на моем объекте FirebaseAuth!

Например, при настройке аутентификации Facebook, как указано здесь

private void handleFacebookAccessToken(AccessToken token) {
    Log.d("AUTH", "handleFacebookAccessToken:" + token.getToken());
    // ...
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    Log.d("AUTH", "Credential: "+credential);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d("AUTH", "signInWithCredential:onComplete:" + task.isSuccessful());

                    // If sign in fails, display a message to the user. If sign in succeeds
                    // the auth state listener will be notified and logic to handle the
                    // signed in user can be handled in the listener.
                    if (!task.isSuccessful()) {
                        Log.w("AUTH", "signInWithCredential", task.getException());
                        Toast.makeText(LoginActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                    }

                    // ...
                }
            });
}

Все в порядке со стороны Facebook, но когда дело доходит до входа в систему с полученными учетными данными fb, функция signInWithCredential не выполняет никаких обратных вызовов, и в моей пользовательской базе ничего не происходит.

Кроме того, я пробовал намного проще

mAuth.createUserWithEmailAndPassword(etUserID.getText().toString(), etPassword.getText().toString());

и ничего не происходит. Я включил обоих поставщиков в консоль Firebase и загрузил последний файл google-services.json для проекта. Я что-то упускаю?

EDIT: просто попробовал запустить демонстрацию быстрой аутентификации, и это не сработает. Я вижу на своем эмуляторе, что это приложение не будет работать, если я не обновляю сервисы google. Это причина этой ошибки? Я пробовал обновлять сервисы google на разных эмуляторах, и это просто возвращает ошибку.

Ответ 1

Получил его работу только на реальном устройстве Android, но ему не повезло с эмулятором.

Для устройства вам нужно добавить следующую зависимость в файл приложения gradle:

compile 'com.google.android.gms:play-services-auth:9.0.2'

Я не тестировал, но кажется, что если вы обновите образ эмулятора с помощью новых сервисов Google Play, он также должен работать.

Надеюсь, поможет.

Ответ 2

Похоже, что проблема вызвана тем, что некоторые эмуляторы не поддерживают последние версии сервисов Google Play! (Вы увидите ошибку в logcat). Galaxy Nexus 5x API 23 w/API Google, похоже, работает с входами.

Ответ 3

Решил это благодаря сообщению @feroult и другим ресурсам. В моем случае OnCompleteListener никогда не вызывался после того, как я обновил build.gradle с новой версией библиотеки Play Services и библиотек Firebase. Решение заключается в обновлении приложения Play Services, установленного на эмуляторе.

В моем случае он начал работать с 11.0.4 версией библиотеки Play Play и 11.3.02 версией приложения Play Services, установленного на эмуляторе.

enter image description here enter image description here

Ответ 4

У меня была такая же проблема, и в конце концов в моем случае я забыл включить ее в консоли firebase

enter image description here

Ответ 5

На физическом устройстве мне нужно было обновить Службы Google Play, чтобы заставить обратный вызов работать

Ответ 6

У меня была такая же проблема, и решение было очень простым: прекратите использование эмулятора и начните использовать физическое устройство для тестирования приложения. Я не знаю почему, но похоже, что у эмулятора есть некоторые проблемы, связанные с firebase:/