okaryo.log

AAB形式でビルドしたFlutter製のAndroidアプリでGoogleログイン時にPlatformException | okaryo.log

AAB形式でビルドしたFlutter製のAndroidアプリでGoogleログイン時にPlatformException

    #Flutter#Android#Firebase

はじめに

最近個人開発しているアプリのsubskunの方でGoogleログインを実装した。

デバッグビルドで動作確認をしていたときは問題なく動作していたが、AppDistributionとストアからインストールしたときは以下のエラーが出てGoogleログインができなかった。

PlatformException(sign_in_failed, com.google.android.gms.common.api.b: 10: , null, null)

解決法

ストアからのインストール

PlayConsoleの設定>アプリの完全性>アプリの署名>アプリ署名鍵の証明書にフィンガープリントがある。

PlayConsoleのSHA

このフィンガープリントをFirebaseのプロジェクトの設定>全般>マイアプリにあるフィンガープリントに登録する必要があった。

FirebaseConsoleのSHA

ちなみにFirebaseの方で以下の説明がされている。DynamicLinksを使わないのであれば登録するのはSHA-1だけでよいだろう。

SHA-1: ご使用のアプリの OAuth 2 クライアントと API キーを作成する場合に使用
SHA-256: Firebase Dynamic Links の設定に使用

AppDistributionからのインストール

実はなんとAppDistributionにあるAABボタンをホバーすると以下のツールチップが表示される。

AppDistributionのAABボタン

証明書を表示ボタンを押すと以下のフィンガープリントが表示されるので、これをストアからのインストールと同じくFirebaseのプロジェクトに設定する。

AppDistributionのSHA

これでAppDistributionからインストールしたアプリもGoogleログインができるようになった。

これが一番時間がかかった…。そもそもストアとAppDistributionで別々に設定するとは思わなかった…。

デバッグビルドでのインストール

ついでにデバッグビルドで実機にインストールするときにGoogleログインできるようにする対応も書いておく。

cd androidandroidディレクトリに移動し、./gradlew signingReportをターミナルで実行する。

すると、以下のようにフィンガープリントが出力されるのでこれをFirebaseのプロジェクトに登録するとデバッグビルドでもGoogleログインの動作確認が可能になる。

signingReport

参考: https://developers.google.com/android/guides/client-auth?authuser=0#using_gradles_signing_report

おわり

公式ドキュメントに明記されていなかったし、ストアとAppDistributionからのインストールそれぞれで設定が必要なことに気づかず、かなり時間を溶かすことになった。

一方で、AABを扱うのは今回の個人開発が初めてだし、Androidの署名まわりも完全に把握しているわけではない、という知識に関する部分も時間がかかった理由にあると思われる。この辺りは今後少しずつキャッチアップしていきたい。

(おまけ)上記の対応でもエラーが出る場合

以下の対応ができているか確認してみるとよいかもしれない。

  • Firebaseのプロジェクトの設定>全般>公開設定>サポートメールが入力されているか
  • 最新のgoogle-services.jsonをダウンロードしてビルドできているか

関連記事
最新記事
プロモーション

This site uses Google Analytics.