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)
クラッシュが発生するコードの一部を次に示します。
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に この問題 が見つかりましたが、決定的な解決策はまったくありません。誰かがこの種の問題に遭遇しましたか?前もって感謝します。
注:私はFlutterを使用していませんが、flutterがないとエラーが発生します。デバイスは、Samsung A51で、Android 10。
@ mahdi-malv、@ ambrose-bako、@ steeveが正しい。
Firebase Android SDK 2月27日に更新 (M65)、その後、新しいインフラストラクチャサービスであるFirebase Installations SDKが FirebaseインストールAPI 。
Firebaseインストールでは、Firebaseサーバーと正常に通信するために、有効なFirebaseオプションAPI key
、project ID
、およびapplication ID
(別名 "appId
")が必要です。
Firebase Installations APIとの通信中のエラーは、無効なFirebaseオプションまたはAPIキーに関する設定ミスを示しています。
問題を軽減するには
google-services.json
ファイルから有効なFirebaseオプションを使用していることを確認してください: Firebaseオプション:手順と背景 。API restrictions
を使用する場合は、アプリケーションで使用されるAPIキーがFirebase Installations API(およびアプリケーション)のホワイトリストに含まれていることを確認してください: APIの制限:手順と背景Application restrictions
について:ラジオボタンをNone
に設定するか、アプリがホワイトリストに登録されていることを確認してください(正しいSHA-1 certificate
を使用)。詳細については、以下をご覧ください。
https://firebase.google.com/support/privacy/init-options
この問題の解決策を見つけました
1)Android Studio、左パネルの「プロジェクト」スイッチAndroidビューからプロジェクトビューへ
2)ファイルgoogle-services.jsonを「app」フォルダにコピーしないでください(説明にあるように)...しかし、このファイルを上位ルートフォルダにコピーします
そしてそれはうまくいく
念のため、パッケージ名を変更し、google-services.jsonを削除し、firebaseでチェックされたfirebase-databaseに移動しました(読み取り\書き込み)。
次に、Firebaseプロジェクト設定から古いパッケージとそのハッシュを削除し、新しいパッケージとハッシュを追加した後、新しいgoogle-services.jsonを受け取り、その後すべてが機能しました
エラーは、パッケージがfirebaseで指定されたがハッシュがなかったということだと思います
最近、UrbanAirshipからFCMに切り替えた後も同じ問題が発生しており、このスレッドを通過した後、いくつかのポイントはまだ少し不明です。
最初に、Firebaseコンソール/プロジェクト設定にSHA1/SHA256がありませんでしたが、これらを追加しました。この手順に続いて、同じ場所から更新されたgoogle-services.jsonもダウンロードしました。これが問題の一部であったかどうか、私には完全にはわかりません。
次に、数日後にリリースするので、ここで投票したソリューションを試し、FirebaseOptionsを使用してFirebaseAppを初期化します。チェック後 https://firebase.google.com/support/privacy/init-options これは2番目の解決策としてリストされているようです。私たちはすでにjsonを持っていましたが、それはうまくいきませんでした。
FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId(FIREBASE_APP_ID)
.setProjectId(FIREBASE_PROJECT_ID)
.setApiKey(FIREBASE_API_KEY)
.build();
FirebaseApp.initializeApp(this, options, "UNIQUE APP NAME");
FIREBASE_APP_IDは、更新されたgoogle-services.jsonの「mobilesdk_app_id」キーの下にあります。このスレッドですでに言及されているように、Firebaseコンソール-プロジェクト設定からも削除できます(jsonと同じ場所)。
FIREBASE_PROJECT_IDはFirebaseプロジェクトの一意の識別子で、Firebaseコンソールで確認できます。
今私の混乱は以下から来ています:FIREBASE_API_KEY:FirebaseコンソールにWeb APIキーがあり、google-services.jsonにも "api_key"/"current_key"があります。これらはどちらも類似した形式を共有していますが、違いがあります。 google-services.jsonキーも、google console/APIs&Services/Credentialsにリストされているキーと同じです。これらのどれを使用するかわかりません。そういえば、それらのキーには制限が設定されていなかったため、エラーはそこからは発生していませんでした。
また、初期化メソッドの3番目のパラメーターであるUNIQUE APP NAMEについてはどうでしょうか。これは特に何かを参照していますか、それともFirebaseコンソールからのプロジェクト名などを使用する必要がありますか?私は何の影響もなく「テスト」を入力することさえできるのを見ました。
これら2つのことを理解するために、あなたが提供できる支援があれば幸いです。ありがとうございました。