
なかなかClaude-4-sonnetさんでも解決できなかったのでメモ。(生成AIでのプログラムは、フレームワークを管理画面で設定している場合の不具合を、プログラム上で解決しようと試みるので、間違った方にハマりがち)
React Native + Expo + Firebase Authenticationを使用したアプリで、Android実機でのログイン時にauth/app-not-authorizedエラーが発生する問題を解決しました。この記事では、問題の原因と解決策、そしてExpo/EAS環境でよくある落とし穴について詳しく説明します。
問題の概要
エラーの詳細
textError: [auth/app-not-authorized] This app is not authorized to use Firebase Authentication. Please verify that the correct package name, SHA-1, and SHA-256 are configured in the Firebase Console. [ Invalid app info in play_integrity_token ]
発生環境
- プラットフォーム: Android実機のみ
- フレームワーク: React Native + Expo
- ビルド方法: EAS Build
- 認証方法: Firebase Authentication(電話番号認証)
重要なポイント
- iOSでは正常動作
- Android実機でのみエラー発生
問題の原因
真の原因
Google Play Consoleのアプリ署名鍵の証明書がFirebaseプロジェクト設定に登録されていなかった
なぜiOSは動作したのか
- iOSはGoogle Play Consoleの証明書検証が不要
- AndroidのみがGoogle Play Consoleの証明書を必要とする
エラーメッセージの誤解
text[ Invalid app info in play_integrity_token ]
このメッセージから「Play Integrity = App Check」と判断しましたが、実際は:
- Play Integrity API = Google Play Consoleの証明書検証
- Firebase App Check = 別のセキュリティ機能
解決策
1. Google Play Consoleでアプリ署名鍵を確認
- Google Play Consoleにログイン
- アプリを選択
- 「リリース管理」→「アプリの署名」を確認
- SHA-1とSHA-256フィンガープリントをコピー
2. Firebase Consoleに証明書を登録
- Firebase Consoleにログイン
- プロジェクトを選択
- 「プロジェクトの設定」→「全般」タブ
- Androidアプリの「SHA証明書フィンガープリント」に追加
まとめ
この問題は、Google Play Consoleのアプリ署名鍵の証明書がFirebaseプロジェクト設定に登録されていなかったことが根本原因でした。App Checkの設定変更は全て不要で、単純にFirebase Consoleでの証明書登録だけで解決できる問題でした。Expo/EAS環境では、署名鍵の管理が複雑になるため、問題が発生した際は:
- エラーメッセージを正確に解釈する
- プラットフォーム固有の問題か確認する
- 署名鍵の整合性を慎重にチェックする
これらのポイントを押さえることで、効率的に問題を解決できるでしょう。