【Kotlin/Firebase】AuthenticationでGoogleアカウントでログインを実装する方法!

この記事からわかること
- Kotlin/Firebaseで作成したAndroidアプリにAuthenticationを導入する方法
- Googleアカウントでログインできるようにする方法
- エラー:com.google.android.gms.common.api.ApiException: 10:の解消方法
index
[open]
\ アプリをリリースしました /
今回はFirebase Authenticationでログイン機能を実装する際に、Googleアカウントでログインできるようにする方法をまとめていきます。
AuthenticationでGoogleアカウントでログインする方法
手順
- Firebase プロジェクトにAuthenticationを追加
- gradleにSDKの追加
- フィンガープリントの取得/登録
- マニフェストファイルに権限を追加
- ログインボタン(UI)の実装
- ログイン機能の実装
1. Firebase プロジェクトにAuthenticationを追加
参考文献:Android で Google を使用して認証する
まずはFirebase Authenticationを「始める」をクリックして認証するログインプロバイダを選択します。

ここでGoogleを選択します。

「有効にする」にチェックを入れてサポートメールアドレスを設定しておきます。

これでプロジェクトの準備が整ったのでプロジェクトにAndroidアプリを追加しておいてください。すでにAndroidアプリを追加していた場合は「google-services.json」が更新されているので変更しておく必要があります。ここらへんの詳細な流れは以下の記事を参考にしてください。
【Android Studio】Firebaseの導入方法!Firebase Analytics/Google Analytics
2.gradleにSDK追加
続いて「build.gradle」にAuthenticationのFirebase SDK(Software Development Kit)を追加していきます。追加するのは以下の2つです。
3.フィンガープリントの取得/登録
Authenticationを使用するためにはフィンガープリント(SHA-1フィンガープリント)が必要になります。これはFirebaseとAndroidアプリを安全に関連づけるために必要になります。
登録が必要なフィンガープリントはデバッグ用とリリース用の2つになります。デバッグ用のフィンガープリントはターミナルに以下のコマンドを入力します。
するとパスワードを問われるのでandroid
と入力します。
すると以下のように出力されます。このMD5
に記載されているXX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
部分をコピーします。(SHA1に記載されているのはSHA256形式でした。なぜか1行ずれているみたいです。)
コピーしたフィンガープリントをFirebaseのプロジェクトの「歯車マーク」>「プロジェクトの設定」>「全般」>「Androidアプリ」にある「SHA 証明書フィンガープリント」に追加します。

リリース用のフインガープリント
リリース用のフインガープリントはAABファイル作成時に作成するKeyStoreのパスを使用して以下のコマンドを実行することで取得できます。
上記のやり方がよくわからない場合は「app-release.aab」を生成した後であれば以下コマンドで取得することもできます。
4.マニフェストファイルに権限を追加
Authenticationの機能を利用するにはネットワークアクセスが必要になるので以下の権限を追加しておきます。
5.ログインボタン(UI)の実装
ログインボタンはSignInButton
を使用することで簡単に実装することができます。

6.ログイン機能の実装
実装は以下のとおりです。ざっくり説明するとGoogleアカウント認証用のIntent
を実行してその結果で取得できたアカウント情報を使用してサインインしています。
おすすめ記事:【Kotlin/Android Studio】registerForActivityResultの使い方!launcherとは?
クライアントIDは「google-services.json」の中に記載されているものを使用すればOKです。
エラー:com.google.android.gms.common.api.ApiException: 10:
実装完了後に以下のようなエラーが発生してサインインに失敗してしまいました。
このエラーはどうやらフィンガープリントやクライアントIDが異なると発生するようなので両者が正しくセットされているか確認してみてください。
iOSでの実装はこちら
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。