FirebaseAuth.getInstance возвращает ноль

Я только начал использовать аутентификацию Firebase, я следовал нескольким руководствам, включая документы Firebase, но независимо от того, что я делаю, FirebaseAuth.getInstance() всегда возвращает значение null. После долгих попыток я решил удалить все, что я сделал, связанный с аутентификацией, и начать все заново, чтобы использовать только объявление переменной FirebaseAuth и ее инициализацию, как показано ниже: В инициализации переменных класса:

private FirebaseAuth mAuth;

А затем в методе onCreate() я вызвал метод, который инициализирует переменные и ссылки firebase, поэтому я вызываю следующий метод:

private void initFirebase()     //initialize firebase
    {
        FirebaseApp.initializeApp(this);
        mAuth = FirebaseAuth.getInstance();
        mFirebaseDatabase=FirebaseDatabase.getInstance();
        mDatabaseReference=mFirebaseDatabase.getReference().child("users");
        mEventsReference=mFirebaseDatabase.getReference().child("events");
        mStorageRef= FirebaseStorage.getInstance().getReference();
        defaultRef = mStorageRef.child("usersProfilePic/");             //Assigning default reference for storage
    }

Мои зависимости в build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28

    /*dataBinding {
        enabled = true;
    }*/
    defaultConfig {
        applicationId "com.example.android.aln4"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        multiDexEnabled true
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //noinspection GradleCompatible
    testImplementation 'junit:junit:4.12'

    //google maps api
    implementation 'com.google.android.gms:play-services-maps:16.0.0'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'com.google.android.gms:play-services-places:16.0.0'

    //Firebase
    implementation 'com.google.firebase:firebase-crash:16.2.1'
    implementation 'com.firebase:firebase-client-android:2.5.2'
    implementation 'com.google.firebase:firebase-core:16.0.6'
    implementation 'com.google.firebase:firebase-database:16.0.6'
    implementation 'com.firebase:firebase-client-android:2.5.2'
    implementation 'com.firebaseui:firebase-ui-database:2.1.1'
    implementation 'com.google.firebase:firebase-storage:16.0.5'
    implementation 'com.google.firebase:firebase-firestore:18.0.0'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    implementation 'com.google.firebase:firebase-auth:16.1.0'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'

    //Calendar
    implementation 'com.github.alamkanak:android-week-view:1.2.6'
    implementation 'com.github.sundeepk:compact-calendar-view:3.0.0'
    implementation 'com.github.khacpv:Calendar-Day-View:1.0.5'
    //noinspection GradleCompatible
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    //Image tools
    implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'de.hdodenhof:circleimageview:2.1.0'
    //Validation
    implementation 'com.basgeekball:awesome-validation:2.0'
    //Notification badge
    implementation 'com.nex3z:notification-badge:0.1.0'
    //Others
    implementation 'com.kevin:loopview:1.4.1'

    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true

На самом веб-сайте аутентификации Firebase я уже включил службу аутентификации в методе входа.

Итак, если кто-нибудь может сказать мне, что здесь не так, я был бы рад, так как я провел последние 6 часов, пытаясь понять это...

Вы пытаетесь получить текущего вошедшего в систему пользователя?

Manzurul Hoque Rumi 02.02.2019 17:41

скорее всего, google-service.json отсутствует или плагин сервисов Google Play не был применен ... для этого потребуется, чтобы оба build.gradle ответили надежно.

Martin Zeitler 02.02.2019 17:47

@ManzurulHoqueRumi Я просто пытаюсь получить что-то внутри переменной mAuth, чтобы потом использовать ее ... Не имеет значения, что ...

Adi Harel 02.02.2019 17:53

@MartinZeitler Я уже восстановил файл google-service.json и заменил его предыдущим, а также применил плагин служб Google.

Adi Harel 02.02.2019 17:54

@AdiHarel this может не быть instanceof Context при предыдущем вызове FirebaseApp.initializeApp(this). вы называете это в рамках Activity? потому что, когда он терпит неудачу, следующий вызов, скорее всего, также не будет работать.

Martin Zeitler 02.02.2019 17:58

Если вы вошли в систему, он вернет что-то, иначе вернет ноль.

Manzurul Hoque Rumi 02.02.2019 17:59

@MartinZeitlerMar, это действие.

Adi Harel 02.02.2019 18:00

@ManzurulHoqueRumi В этом нет никакого смысла ... FirebaseAuth.getInstance не будет вызываться, если я не вошел в систему ...? Итак, как мне войти в систему в первую очередь?

Adi Harel 02.02.2019 18:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
1 093
3

Ответы 3

getInstance() предназначен для проверки того, вошел ли пользователь в систему или нет. null означает, что вы не вошли в систему.

это неправильно. просто посмотрите Developers.google.com/android/reference/com/google/firebase/‌​…

Martin Zeitler 02.02.2019 18:01

Я написал вам в комментариях к посту. Это не имеет смысла, потому что это означает, что я не могу войти в систему, потому что по умолчанию я вышел из системы.

Adi Harel 02.02.2019 18:02

документация как минимум сообщает, что возвращает FirebaseApp.initializeApp(this);:

the default FirebaseApp, if either it has been initialized previously, or Firebase API keys are present in string resources. Returns null otherwise.

обязательно примените плагин Google Services в нижней части build.gradle, после блока android... потому что именно отсюда происходят эти API keys in string resources.

что является единственным логическим объяснением того, что FirebaseAuth.getInstance() возвращает null.


этот добавлен дважды: com.firebase:firebase-client-android:2.5.2.

несоответствие версий может быть решено путем исключения:

implementation ("com.firebaseui:firebase-ui-database:2.1.1") {
    exclude group: "com.android.support", module: "recyclerview-v7"
}

так что вместо этого он будет использовать com.android.support:recyclerview-v7:28.0.0.

Я только что добавил весь свой файл build.gradle в исходный пост, см. Редактирование

Adi Harel 02.02.2019 18:10

@AdiHarel, проблема в com.google.gms.googleservices.GoogleServicesPlugin.config.di‌​sableVersionCheck = true ... эти конфликты версий необходимо исправить в первую очередь, потому что сокрытие проблемы не решит проблему.

Martin Zeitler 02.02.2019 18:14

Как это сделать? просто удалить эту часть?

Adi Harel 02.02.2019 18:15

@AdiHarel бедюк. тогда он должен жаловаться на несоответствие версий.

Martin Zeitler 02.02.2019 18:15

Я удалил его, все равно возвращает ноль

Adi Harel 02.02.2019 18:27

Да, я видел это, удалил реализацию и вставил ту, которую вы сказали мне вставить, и все равно ноль

Adi Harel 02.02.2019 18:33

@AdiHarel попробуй один раз очистить/сделать проект. в журнале сборки должна быть одна строка: Parsing json file: .../src/debug/google-services.json, тогда учетные данные должны быть применены к строковым ресурсам — и FirebaseApp.initializeApp(this) должен работать, что является предварительным условием для работы FirebaseAuth.

Martin Zeitler 02.02.2019 18:44

Это изменение, которое вы только что написали, неверно, я изменил реализацию места на то, что вы только что сказали, и это просто дало мне много ошибок в моем коде...

Adi Harel 02.02.2019 18:50

о чистке и строительстве, где находится этот «журнал сборки», как его искать и когда именно?

Adi Harel 02.02.2019 19:02

@AdiHarel, вы можете продолжать использовать устаревшую версию, но она перестанет работать 29 июля 2019 года ... с точки зрения простого отключения. вы можете оставить это как комментарий на данный момент, но все же это следует учитывать. см. developer.google.com/places/android-sdk/client-migration

Martin Zeitler 02.02.2019 19:02

ок, спасибо, буду иметь в виду, позже перейду на новый

Adi Harel 02.02.2019 19:09

Может у вас есть решение моей проблемы?

Adi Harel 02.02.2019 19:31

@AdiHarel ответ уже устраняет несоответствие версий - и я подробно объяснил, почему это происходит - и как это исправить. то, что google-services.json находится не в том месте, также может быть проблемой, есть примерно 3 места, где их забирают. в то время как FirebaseApp не будет работать, FirebaseAuth тоже не будет, потому что это зависит от него. также дважды проверьте добавленные ключевые отпечатки пальцев.

Martin Zeitler 02.02.2019 20:02

Я уже удалил строку несоответствия версии в файле build.gradle, заново сгенерировал файл google-service.json и убедился, что он находится в нужном месте. FirebaseApp действительно работает, я запустил отладчик и убедился, что в нем есть какая-то ценность, и это так. Кстати, FirebaseDatabase также имеет некоторую ценность. Я действительно не знаю, в чем проблема

Adi Harel 02.02.2019 20:12

эй, извините, что поднимаю это снова. Это не связано с вопросом, но не смог найти способ связаться с вами, кроме как здесь. Я помню, вы сказали мне, что у меня есть способ отправлять push-уведомления определенным пользователям с помощью firebase, но через код, а не вручную с помощью fcm. Я искал его с минуту, но не мог найти...

Adi Harel 09.02.2019 09:05

Добавьте это в свой манифест:

<service android:name = "com.google.firebase.components.ComponentDiscoveryService">
        <meta-data
            android:name = "com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
            android:value = "com.google.firebase.components.ComponentRegistrar" />

Если такой же сервис существует, добавьте простой тег метаданных.

Это на самом деле не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав Задать вопрос. Вы также можете добавить награду, чтобы привлечь больше внимания к этому вопросу. - Из обзора

Reznik 16.06.2020 09:45

Другие вопросы по теме