Android
googleapi
NCMB

NIFTY Cloud mobile backendのAndroid SDKでGoogle認証を試す - 準備編

More than 3 years have passed since last update.

Nifty Clound Mobile Backend (NCMB) エバンジェリストの小山(koyhoge)です。

先日6月15日、NCMBの機能に「Google認証」が追加されました。iOSとAndroid用のSDKもそれぞれ、Google認証に対応するため同日アップデートが行われています。

MobileBackend: 機能追加のお知らせ

これまでSDKの機能として、ユーザーを認証する方式としては

  • 独自アカウント
  • Twitter連携
  • Facebook連携

がサポートされていましたが、今回これに追加してGoogle認証が使えるようになったわけです。ユーザにとって、各サービスそれぞれにアカウント名とパスワードを登録するのは面倒な作業であるという見方もあります。普段より SNS を使用している人にとっては、その SNS の認証基盤を使ってサービスにログインできれば、余分なパスワードを覚えておく必要が減るわけで、サービスの特性によってはユーザのメリットを大きく高めることになるでしょう。

6月15日にリリースされたAndroid用SDKバージョン1.5でGoogle認証のサポートが追加され、その後6月22日にFacebook認証のバグを修正したバージョン1.5.1がリリースされています。

SDKの変更履歴 (Android)

この記事では新機能のGoogle認証を実現するアプリをゼロから作成してみます。

今回の記事は2部構成になっていて、この記事は実際にプログラムを作成するまでの準備を行う「準備編」です。後半は「開発編」になります。

参考になるページは以下です。

準備編

まずはアプリをのコードを書く前に様々な準備が必要なのです。複数のサービスが連携して動作する関係で、あちらで取得した値をこちらで入力してなんてこともありますし、省略するとかえって分かりにくいように思えたので、ざっと全部やってみましょう。この辺のことはすでに分かってるぜーという方は開発編に飛んでしまって構いません。

アプリのパッケージ名を決める

ご存知のように Android アプリには一意のパッケージ名を持っています。Google認証を使うためにはどのアプリに許可するのかを決めるためにパッケージ名を使用するので、まずパッケージ名を決めなければいけません。ただAndroidアプリを作る場合は必ずパッケージ名は決めるものなので、深く考えずにサクッと決めてしまいましょう。

今回つくるアプリは

  • org.koyhoge.ncmbgauth

にしました。

アプリの署名証明書のフィンガープリントを得ておく

これまたご存知のように Android アプリをリリースする際には証明書で署名しなければいけません。この後で説明する「Android用クライアントID」を取得するためには、この証明書のフィンガープリントが必要です。証明書ファイルに対して keytool コマンドを実行することでフィンガープリントを表示することができます。今回はアプリをリリースするつもりはなく手元で動かすだけなので、Android Studio がインストールされる際に自動的に生成される、デバッグビルド用の証明書をつかってフィンガープリントを得ることにしましょう。

デバッグビルド用の証明書は、自分のホームディレクトリの .android/debug.keystore にあります。表示する際にパスワードを聞かれますが、これは「android」に設定されています。

Signing Your Applications | Android Developers

こんな感じでフィンガープリントを表示します。

shell
$ keytool -list -keystore ~/.android/debug.keystore
キーストアのパスワードを入力してください:

キーストアのタイプ: JKS
キーストア・プロバイダ: SUN

キーストアには1エントリが含まれます

androiddebugkey,2015/05/02, PrivateKeyEntry,
証明書のフィンガプリント(SHA1): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

一般に公開するアプリの場合は、自分で証明書を作成してサインをすることになりますので、その証明書ファイルに対してフィンガープリントを取得してください。

ここで得たフィンガープリントは、クライアントIDを取得するときに使うのでメモしておきます。

Google Developers Consoleでプロジェクトを作る

これから Google Developers Console で色々と作業をしますが、その最終目的は「AndroidアプリのクライアントID」を取得することです。ここ重要!

まず Google Developers Console サイトに行きます。

Googleアカウントでログインすると以下の画面になります。

ncmbgauth_1_01.png

「プロジェクトを作成」ボタンを押して、新しいプロジェクトを作ります。プロジェクト名は「NCMB Google Auth Example」としました。

ncmbgauth_1_02.png

無事にプロジェクトが作成されると、プロジェクトダッシュボード画面になります。

ncmbgauth_1_03.png

Google認証機能を使うには Google+ の API を許可する必要があるのでその設定をします。まず左側の「API」メニューを選択して…

ncmbgauth_1_04.png

API の検索ボックスに「plus」と入力します。

ncmbgauth_1_05.png

するとAPIの候補にGoogle+が現れるのでそれを選択し、「APIを有効にする」ボタンを押して、Google+ API を有効にします。

ncmbgauth_1_06.png

次に左側の「認証情報」メニューを選択します。クライアントIDは当然ながらまだありません。

ncmbgauth_1_07.png

ここで「新しいクライアント ID を作成」ボタンを押して作成に入ります。作成用のダイアログが表示されますが、アプリケーションの種類は「インストールされているアプリケーション」を選択して「同意画面を設定」ボタンを押します。

ncmbgauth_1_08.png

同意画面の作成画面になりますので、必要項目を入力します。今回は必須項目である「サービス名」に「NCMB Google Auth」とだけ入力することにします。

ncmbgauth_1_09.png

最後にクライアントIDの作成ダイアログが表示されます。ここで「インストールされているアプリケーションの種類」に「Android」を選択します。「パッケージ名」には自分のアプリのパッケージ名、今回は「org.koyhoge.ncmbgauth」を入力し、「署名証明書フィンガープリント (SHA1)」に取得しておいたフィンガープリントを入力します。

ncmbgauth_1_10.png

「クライアント ID を作成」ボタンを押すと、問題なければ無事にクライアントIDが作成されます。ncmbgauth_1_11.png

画面の右側に表示されている .apps.googleusercontent.com で終わる文字列がクライアントIDです。これを後で使用するのでメモしておきます。

google-services.json を取得する

これまで設定してきたプロジェクトの情報を Android アプリに組み込むためには、google-services.json という設定ファイルをダウンロードして Android アプリのビルド内に組み込まなければいけません。ではダウンロードの手順を見ていきましょう。

まずは以下のリンクにアクセスします。

Start Integrating Google Sign-In into Your Android App

すると以下の画面が現れますので、画面内の「GET A CONFIGURATION FILE」ボタンを押します。ncmbgauth_1_12.png

「Create or choose an app」という画面になるので、「App name」の項目から先ほど作成した「NCMB Google Auth」を選びます。「CONTINUE TO Choose and configure services」というボタンを押します。

ncmbgauth_1_13.png

「Choose and configure services」という画面になるので…

ncmbgauth_1_14.png

一番下までスクロールして「CONTINUE TO Generate configuration files」というボタンを押します。

ncmbgauth_1_15.png

最後に「Download and install configuration」という画面になるので、そこにある「Download google-services.json」というボタンを押して、google-services.json ファイルをダウンロードします。このファイルは、開発編で使用します。

ncmbgauth_1_16.png

NCMB のコンソール画面で Google 認証を有効に

これまでの手順で取得した「Android 用クライアントID」を、NCMB の登録アプリに紐付けます。
まずは 以下のリンクから NCMB の管理コンソールにログインします。

https://console.mb.cloud.nifty.com/

左側メニューの「アプリ設定」からすぐ右側の「SNS連携」を選択し、画面中ほどにある「Google連携」の

  • 「Google連携の許可」を「許可する」に変更
  • 「Google Client ID」に上記で取得したクライアントIDを入力

最後に「保存する」ボタンを押して完了です。

ncmbgauth_1_17.png

ちょっと長かったですが、これで事前準備はすべて終了です。次の「開発編」では実際にプログラムを作ってGoogle認証を試してみましょう。