java .io.IOException: FIS_AUTH_ERROR в Android Firebase - PullRequest
6 голосов
/ 16 марта 2020

Я получаю следующую ошибку с сервисами Firebase.

 E/FirebaseInstanceId: Topic sync or token retrieval failed on hard failure exceptions: FIS_AUTH_ERROR. Won't retry the operation.
 D/AndroidRuntime: Shutting down VM
    com.google.android.gms.tasks.RuntimeExecutionException: java.io.IOException: FIS_AUTH_ERROR
        at com.google.android.gms.tasks.zzu.getResult(Unknown Source:15)
        at com.myApp.MainActivity$2.onComplete(MainActivity.java:349)
        at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7804)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)
     Caused by: java.io.IOException: FIS_AUTH_ERROR
        at com.google.firebase.iid.zzs.zza(com.google.firebase:firebase-iid@@20.1.0:82)
        at com.google.firebase.iid.zzs.zza(com.google.firebase:firebase-iid@@20.1.0:96)
        at com.google.firebase.iid.zzx.then(com.google.firebase:firebase-iid@@20.1.0:4)
        at com.google.android.gms.tasks.zzd.run(Unknown Source:5)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Вот часть кода, где происходит cra sh:

        FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (task.getResult() != null && task.isSuccessful()) {
                    // Get new Instance ID token
                    firebaseToken = task.getResult().getToken();
                    prefs.edit().putString("firebaseToken", firebaseToken).apply();
                    registerToken();
                }
            }
        });

Ошибка происходит в onComplete , Вот зависимости Firebase, которые я использую:

    // FIREBASE
implementation 'com.google.firebase:firebase-analytics:17.2.3'
implementation 'com.google.firebase:firebase-messaging:20.1.2'
implementation 'com.google.firebase:firebase-appindexing:19.1.0'
implementation 'com.google.firebase:firebase-ads:19.0.0'
implementation 'com.google.firebase:firebase-crashlytics:17.0.0-beta01'

Я обнаружил эту проблему на Github, связанную с моим cra sh, но окончательного решения не существует вообще. Кто-нибудь сталкивался с такой проблемой? Заранее спасибо.

Примечание: я не использую Flutter, но ошибка происходит и без Flutter. Устройство - Samsung A51 с Android 10.

Примечание 2: Firebase снял ядро ​​firebase. С этим может быть связана проблема. enter image description here

Ответы [ 6 ]

8 голосов
/ 16 марта 2020

Временный, но рабочий раствор. Просто понизьте com.google.firebase: передача сообщений firebase: 20.1.2 до com.google.firebase: передача сообщений firebase: 20.1.0 . В некоторых версиях 20.1.1 и 20.1.2 существует какая-то ошибка. Приложение больше не обрабатывает sh.

ОБНОВЛЕНИЕ (11.04.2020): я тестировал в com.google.firebase: firebase-messaging: 20.1.5 и, возможно, проблема была исправлена.

ОБНОВЛЕНИЕ (26.04.2020): Я нашел постоянное решение. Сначала обновите зависимости firebase до com.google.firebase: firebase-messaging: 20.1.6 . После этого скачайте google-сервисы. json с firebase. Замените его текущим. После этого build> clean project иначе вы можете получить ключ API с истекшим сроком действия. Пожалуйста, обновите ключ API ошибка. С ключом проблем нет, это какая-то ошибка Google. Если вы выполнили эти шаги, добавьте следующий код в onCreate вашего высшего класса Application, который вы объявили в манифесте в теге приложения.

FirebaseOptions options = new FirebaseOptions.Builder()
        .setApplicationId("APP ID") // Required for Analytics.
        .setProjectId("PROJECT ID") // Required for Firebase Installations.
        .setApiKey("GOOGLE API KEY") // Required for Auth.
        .build();
FirebaseApp.initializeApp(this, options, "FIREBASE APP NAME");

Вы можете найти свой идентификатор приложения в настройках проекта firebase>. Также, если вы отлаживаете, не забудьте отладочный ключ SHA-256, чтобы добавить Firebase.

Теперь у меня больше нет cra sh. Сервисы Firebase работают отлично. С наилучшими пожеланиями.

4 голосов
/ 05 апреля 2020

FIS_AUTH_ERROR означает, что аутентификация для Установка Firebase sdk завершилась неудачно. Если вы используете службу, зависящую от установки Firebase SDK (или FIS), вам необходима действительная авторизация.

В соответствии с Облачные сообщения Firebase v20.1.1 примечание к выпуску :

Приложения, использующие процесс автоинициализации Firebase и плагин Gradle для преобразования google-сервисов. json в ресурсы не затрагиваются. Однако приложения, которые создают свои собственные экземпляры FirebaseOptions, должны предоставить действительный ключ API, идентификатор проекта Firebase и идентификатор приложения.

Так что, если вы (или служба, использующая добавленный вами fcm), используете FirebaseOptions , он должен передать некоторые дополнительные значения для FIS.

Решения

  • Понижение до v20.1.0 из firebase-messaging (хотя и не рекомендуется. Это как работает от проблемы)
  • Предоставьте дополнительные ключи, если вы используете FirebaseOptions
3 голосов
/ 21 марта 2020

Все, что вам нужно сделать, это просто сделать ключ API, который вы используете, имеет разрешение на следующие API:

  1. API установок Firebase
  2. API Firebase Cloud Messaging
  3. API регистрации FCM
  4. Облачные сообщения

Вы можете изменить ограничения в своем облаке Google -> API и службы -> Учетные данные

2 голосов
/ 03 апреля 2020

Это точно (если вы завершили всю настройку), тогда версия сообщений Firebase не совместима с другими зависимостями.

вы можете проверить зависимости здесь , мое решение заключалось в понижении с implementation 'com.google.firebase:firebase-messaging:20.1.3' до implementation 'com.google.firebase:firebase-messaging:20.1.0'

1 голос
/ 21 апреля 2020

@ mahdi-malv, @ ambrose-bako, @steeve правы.


Firebase Android SDK обновления 27 февраля (M65) и впоследствии представили новый сервис инфраструктуры, пакет Firebase Installations SDK, который поставляется с API установок Firebase .
Для установки Firebase требуются допустимые параметры Firebase API key, project ID и application ID (он же "appId") для успешной связи с серверами Firebase.

Ошибки во время связи с Firebase Установочные API указывают на недопустимые параметры Firebase или неправильные конфигурации ключей API.

Чтобы устранить проблему

  • , убедитесь, что ваше приложение использует допустимые параметры Firebase из самого последнего файла google-services.json из консоли Firebase: Параметры Firebase: инструкции и справочная информация .
  • Если вы используете API restrictions, убедитесь, что ключ API, используемый вашим приложением, внесен в белый список для API установок Firebase (и для вашего приложения): API ограничения: инструкции и справочная информация
  • Относительно Application restrictions: либо установите переключатель в положение None, либо убедитесь, что ваше приложение занесено в белый список (с правильным значением SHA-1 certificate).

Для получения подробной информации, пожалуйста, посетите:
https://firebase.google.com/support/privacy/init-options

1 голос
/ 16 апреля 2020

Правильное исправление заключается в добавлении «API установок Firebase» к ограничениям вашего ключа API Google (см. Google-services. json).

В консоли Google Cloud он находится в API и службах , то учетные данные. Откройте ключ API и посмотрите «Ограничения».

Нет необходимости перекомпилировать.

...