1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【KMP/Firebase】Googleログインがデバックでは成功するが、リリース版APKで失敗する原因と解決策

Posted at

はじめに

Kotlin Multiplatform (KMP) と Firebase Authentication を使って、googleでの認証機能を作成していました。しかし、

デバックでは成功するのにリリース版apkでは認証に失敗してしまう

この記事では、私と同じように「デバッグでは動くのに、なぜかリリース版だとgoogle認証に失敗する」という問題に直面した開発者への、その解決策を書き残します。

開発環境

  • Kotlin Multiplatform (KMP)

  • Firebase Authentication (Googleログイン)

  • Android Studio

問題の概要と原因

リリース版APKでGoogleサインインを試すと、アカウント選択後にログイン画面へ戻ってしまう現象が発生。デバックでのLogcatを確認すると、java.lang.SecurityException と出力されていました。

これは、Google側から「このアプリは正規の開発者として登録されていません」と通信を拒否されていることを意味します。

原因は、Androidアプリが持つ2種類の署名キーにありました。

  • デバッグキー: Android Studioから直接実行する際に自動で使われる開発用の鍵

  • リリースキー: APK作成時に手動で作成する本番用の鍵

これらは全く別のSHA-1フィンガープリントを持っています。Firebaseに登録していたのはデバッグキーのSHA-1のみだったため、リリースキーで署名されたAPKからのアクセスがブロックされていたのです。

解決策

解決策はシンプルで、リリースキーのSHA-1もFirebaseに追加登録することです。

リリースキーのSHA-1を取得
Terminalでkeytoolコマンドを使い、APK署名に使ったキーストア (.jks) からSHA1の値を取得します。

keytool -list -v -keystore "<keystoreへのパス>" -alias <エイリアス名>

FirebaseにSHA-1を追加

Firebaseコンソールのプロジェクト設定で、取得したリリースキーのSHA-1を「SHA 証明書フィンガープリント」に追加します。(これでデバッグ用とリリース用の2つが登録された状態になります)

これでapkファイルの方でもgoogle認証に成功することができました。

まとめ

Googleログインを実装する際は、Android Studioからの実行で使われるデバッグキーと、APK作成時に使うリリースキーの2つのSHA-1フィンガープリントを、両方ともFirebaseに登録する必要がある、ということを学びました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?