Table of Contents
“Firebase Authentication“によるGoogleアカウント認証機能を含んだAndroidアプリをリリースした時に直面したエラーとその原因および解決方法についてです。
Flutter を利用して出力した”Android App Bundle”ファイル(.aab)をアップロードしてアプリをリリースした際、実機テストでは問題なかったにも関わらず、ストアからインストールしたアプリにて以下のエラーが発生し、認証が失敗しました。
PlatformException(sign_in_failed, com.google.android.gms.common.api.b: 10: , null, null)
再チェック事項
下記のFirebaseプロジェクトにおける設定を再度確認しましたが、不具合が解決しませんでした。
- SHA証明書フィンガープリントにリリース用KeyStoreのものが含まれているか
- google-services.json は最新のものをダウンロードしたか
- 設定 > プロジェクト > 公開設定 > サポートメール
出力した app-release.aab のSHA1フィンガープリントを以下のコマンドで確認し Firebase のAndroidアプリ設定に含まれているか確認しました。
keytool -printcert -jarfile app-release.aab
一応、SHA256 のフィンガープリントも Firebase プロジェクトに追加し、google-services.json を再ダウンロードして Flutter プロジェクトに移動させた後、”Flutter Clean”などを行い、再度 aab を出力しました。
テストのための実機へのインストールは、出力した aab から bundletool を利用する以下のコマンドで apks を取り出して行っていました。
bundletool build-apks --bundle=$aabPath --output=$apkPath --ks=$keystorePath --ks-pass=pass:$password --ks-key-alias=$keyAlias --key-pass=pass:$password bundletool install-apks --apks=$apkPath
これによって手元にある複数の端末で問題なく動作することが確認できましたが、やはり、ストアにアップロードしたものを端末にインストールするとGoogle認証に失敗します。
サポートメールが空欄であるとエラーが発生するという情報がありましたが、既に記入済みでした。
原因と解決
“Google Play Console”にてGooglePlayアプリ署名が有効であったことが原因でした。
設定 > アプリの署名 を選択すると、以下の画面が表示されます。
これらのキーを Firebase のプロジェクトに登録するフィンガープリントに追加して google-services.json を出力し直したところ、ストアからインストールしたアプリでもGoogle認証が正常に行えるようになりました。
apkでアプリをリリースする場合とは勝手が違っていたため混乱しました。
参考
android – Flutter: generate release SHA1 fingerprint – Stack Overflow