ニフクラ mobile backend (NCMB) エバンジェリストの小山(koyhoge)です。
先日6月15日、NCMBの機能に「Google認証」が追加されました。iOSとAndroid用のSDKもそれぞれ、Google認証に対応するため同日アップデートが行われています。
これまでSDKの機能として、ユーザーを認証する方式としては
- 独自アカウント
- Twitter連携
- Facebook連携
がサポートされていましたが、今回これに追加してGoogle認証が使えるようになったわけです。ユーザにとって、各サービスそれぞれにアカウント名とパスワードを登録するのは面倒な作業であるという見方もあります。普段より SNS を使用している人にとっては、その SNS の認証基盤を使ってサービスにログインできれば、余分なパスワードを覚えておく必要が減るわけで、サービスの特性によってはユーザのメリットを大きく高めることになるでしょう。
6月15日にリリースされたAndroid用SDKバージョン1.5でGoogle認証のサポートが追加され、その後6月22日にFacebook認証のバグを修正したバージョン1.5.1がリリースされています。
この記事では新機能のGoogle認証を実現するアプリをゼロから作成してみます。
今回の記事は2部構成になっていて、この記事は実際にプログラムを作成するまでの準備を行う「準備編」です。後半は「開発編」になります。
参考になるページは以下です。
- [クイックスタート (Android)]https://mbaas.nifcloud.com/doc/current/introduction/quickstart_android.html)
- SDKガイド (Android) : SNS連携
準備編
まずはアプリをのコードを書く前に様々な準備が必要なのです。複数のサービスが連携して動作する関係で、あちらで取得した値をこちらで入力してなんてこともありますし、省略するとかえって分かりにくいように思えたので、ざっと全部やってみましょう。この辺のことはすでに分かってるぜーという方は開発編に飛んでしまって構いません。
アプリのパッケージ名を決める
ご存知のように Android アプリには一意のパッケージ名を持っています。Google認証を使うためにはどのアプリに許可するのかを決めるためにパッケージ名を使用するので、まずパッケージ名を決めなければいけません。ただAndroidアプリを作る場合は必ずパッケージ名は決めるものなので、深く考えずにサクッと決めてしまいましょう。
今回つくるアプリは
- org.koyhoge.ncmbgauth
にしました。
アプリの署名証明書のフィンガープリントを得ておく
これまたご存知のように Android アプリをリリースする際には証明書で署名しなければいけません。この後で説明する「Android用クライアントID」を取得するためには、この証明書のフィンガープリントが必要です。証明書ファイルに対して keytool コマンドを実行することでフィンガープリントを表示することができます。今回はアプリをリリースするつもりはなく手元で動かすだけなので、Android Studio がインストールされる際に自動的に生成される、デバッグビルド用の証明書をつかってフィンガープリントを得ることにしましょう。
デバッグビルド用の証明書は、自分のホームディレクトリの .android/debug.keystore にあります。表示する際にパスワードを聞かれますが、これは「android」に設定されています。
Signing Your Applications | Android Developers
こんな感じでフィンガープリントを表示します。
$ 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アカウントでログインすると以下の画面になります。
「プロジェクトを作成」ボタンを押して、新しいプロジェクトを作ります。プロジェクト名は「NCMB Google Auth Example」としました。
無事にプロジェクトが作成されると、プロジェクトダッシュボード画面になります。
Google認証機能を使うには Google+ の API を許可する必要があるのでその設定をします。
まず、 API とサービス
から 認証情報
を選択します。その時、以下の画面が表示されます。
API の検索ボックスに「plus」と入力します。
するとAPIの候補にGoogle+が現れるのでそれを選択し、「APIを有効にする」ボタンを押して、Google+ API を有効にします。
Google+ APIを有効したら、以下の画面となります。
次に左側の「認証情報」メニューを選択します。クライアントIDは当然ながらまだありません。
OAuth 同意画面
画面では 外部
を選択してから作成
で続きます。
![011.png]
(https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596649/65c73a0a-2e8d-3cb0-2525-53631efaaae7.png)
続いてスコープを追加または削除
で以下と同じな権限を選択して 保存して次へ
ボタンをクリックします。
他のユーザーにアプリをテストする権限を与えるために+ ADD USERS
ボタンでクリックしてユーザーを追加します。
詳細情報は以下の画面で表示されます。ダッシュボードに戻りたい場合は ダッシュボードに戻る
をクリックします。
アプリの機能を実装する設定
まずは以下のリンクにアクセスします。
Start Integrating Google Sign-In into Your Android App
すると以下の画面が現れますので、画面内の「Configure a project」ボタンを押します。
表示しているダイアログで作成したプロジェクトを選択してから、NEXT
で続きます。
Configure your OAuth client
の画面で Android
プラットフォームを選択してPackage name
とSHA-1 signing certificate
を入力します。入力を完了したら、 CREATE
をクリックします。
入力した情報は情報画面で表示されます。 DONE
をクリックして完了します。
NCMB のコンソール画面で Google 認証を有効に
これまでの手順で取得した「Android 用クライアントID」を、NCMB の登録アプリに紐付けます。
まずは 以下のリンクから NCMB の管理コンソールにログインします。
左側メニューの「アプリ設定」からすぐ右側の「SNS連携」を選択し、画面中ほどにある「Google連携」の
- 「Google連携の許可」を「許可する」に変更
- 「Google Client ID」に上記で取得したクライアントIDを入力
最後に「保存する」ボタンを押して完了です。
ちょっと長かったですが、これで事前準備はすべて終了です。次の「開発編」では実際にプログラムを作ってGoogle認証を試してみましょう。