Firebase AuthenticationのGoogleログインなどを使用する場合、FirebaseへAndroidアプリの署名証明書フィンガープリントを登録します。
しかし、Androidアプリには配布方法ごとに異なる署名があります。
- Android Studioで実行するdebug版
- ローカルで直接配布するrelease APK
- Google Playへ提出するAAB
- Google Playからユーザーへ配信されるAPK
登録するSHAを取り違えると、debug版は動くのにGoogle Play版だけ認証に失敗することがあります。
SHA-1とSHA-256の役割
SHAフィンガープリントは、Androidアプリの署名証明書を識別する値です。
FirebaseやGoogle Cloudでは、主に次の組み合わせでAndroidアプリを識別します。
- パッケージ名
- 署名証明書のSHA
主な使い分けは次のとおりです。
| 機能 | 主に確認する値 |
|---|---|
| Firebase Googleログイン | SHA-1 |
| Firebase電話番号認証 | SHA-1 |
| Firebase App Check・Play Integrity | SHA-256 |
| Android App Links | SHA-256 |
利用する機能の公式手順に合わせて登録してください。
どのSHAを登録するか
| 配布方法 | 使用される主な鍵 | Firebaseへ登録するSHA |
|---|---|---|
| Android Studio debug | debug keystore | debug鍵 |
| ローカルrelease APK | release鍵 | 実際に使用したrelease鍵 |
| Google Playへ提出するAAB | アップロード鍵 | ローカル版でも利用する場合に確認 |
| Google Play配信版 | アプリ署名鍵 | Play Consoleのアプリ署名鍵 |
Google Play版のGoogleログインで最も重要なのは、Play Consoleに表示されるアプリ署名鍵SHA-1です。
FirebaseへSHAを追加する手順
- Firebaseコンソールで対象プロジェクトを開く
- 「プロジェクトの設定」を開く
- 「全般」の「マイアプリ」へ移動する
- 対象のAndroidアプリを選択する
- 「SHA証明書フィンガープリントを追加」を選択する
- SHA-1またはSHA-256を入力する
- 保存する
一つのAndroidアプリ設定へ、debug・release・Google Playの複数フィンガープリントを登録できます。
signingReportで確認する
Gradle Wrapperがある場所で実行します。
Windows PowerShell
.\gradlew signingReport
macOS・Linux
./gradlew signingReport
Flutterの場合は通常、androidディレクトリへ移動して実行します。
cd android
./gradlew signingReport
出力例:
Variant: debug
Config: debug
SHA1: AA:BB:CC:DD:...
SHA-256: 11:22:33:44:...
対象のbuild variantを確認して、必要な値をコピーします。
keytoolで確認する
キーストアファイルとaliasが分かっている場合は、keytoolでも確認できます。
keytool -list -v \
-keystore upload-keystore.jks \
-alias upload
Windows PowerShellでは一行で実行できます。
keytool -list -v -keystore upload-keystore.jks -alias upload
この方法で確認できるのは、指定したローカルキーストアの証明書です。Google Playが管理するアプリ署名鍵はPlay Consoleで確認します。
Google Play版のSHAを取得する
Play Consoleで対象アプリを開き、Play App Signingの管理画面を確認します。
表示される主な項目は次の2つです。
- アプリ署名鍵の証明書
- アップロード鍵の証明書
Google Playから配信されるアプリを認証させる場合は、通常、アプリ署名鍵の証明書に表示されるSHAを登録します。
PCを変更した場合
Android Studioのdebug keystoreは、通常、各PCのユーザーディレクトリへ作成されます。
別PCで新しいdebug keystoreが生成された場合、以前とはSHAが異なることがあります。
新しいPCだけGoogleログインに失敗する場合は、そのPCでsigningReportを実行し、新しいdebug SHAをFirebaseへ追加してください。
product flavorを使う場合
環境ごとにパッケージ名を分けている場合は、それぞれをFirebaseへ別のAndroidアプリとして登録します。
開発: com.example.app.dev
本番: com.example.app
開発用Androidアプリにはdebug SHA、本番用AndroidアプリにはPlay App SigningのSHAを登録します。
SHAが正しくても、Firebaseへ登録したパッケージ名が違えば認証できません。
SHA追加後に確認すること
Googleログインの設定を変更した場合は、次も確認します。
- Googleプロバイダが有効か
- 最新の
google-services.jsonを取得したか - 正しいアプリモジュールへ配置したか
- クリーンビルドしたか
- Google Playへ出す場合は
versionCodeを増やしたか
一般的な配置場所:
app/google-services.json
Flutter・React Native:
android/app/google-services.json
SHAフィンガープリントは秘密情報か
SHA-1やSHA-256は、秘密鍵そのものではありません。APIプロバイダへアプリを登録するために共有する公開証明書の識別値です。
公開してはいけないものは次のとおりです。
.jksや.keystoreファイル- 秘密鍵
- キーストアのパスワード
- CIの署名シークレット
Firebaseへキーストアファイルそのものをアップロードする必要はありません。
まとめ
Firebaseへ追加するSHAは、実際にインストールするアプリの署名によって決まります。
- debug版:debug keystoreのSHA
- ローカルrelease版:実際のrelease鍵のSHA
- Google Play版:アプリ署名鍵のSHA
Google Play版だけ認証に失敗する場合は、アップロード鍵ではなく、Play Consoleのアプリ署名鍵SHA-1が登録されているか最初に確認してください。
一次情報
公式参考資料
Google PlayやFirebaseの画面・要件は変更される場合があります。公開作業の前に、リンク先の最新情報も確認してください。