iOSネイティブアプリにGoogle OAuth認証機能を実装する方法
Google OAuth認証はWebアプリであれば多くの情報が載っているのですが、なぜかiOSネイティブアプリになると情報が全然見つからない…。
ということでその方法をまとめてみることにした。
まず、ネット上で検索してみるとiOSでOAuth認証をするためのライブラリは幾つか作られているようでした。
その中でも、Googleが提供しているgtm-oauth2がよく使われているらしい。
ま、Googleが提供しているのであれば、安心して使えるだろうということで、ここではgtm-oauth2を使った方法で説明します。
設定編
開発に入る前にGoogle Consoleで設定する必要があります。
1: OAuthのClientIDを作成する
左メニューからAPIS & AUTH > Credentialsを選択します。
OAuthと書かれた下にCreate new Client IDというボタンがあります。これをクリックするとポップアップが出てきます。このポップアップの中で必要な選択と入力は下記画像のようになります。
すると、下記画像のようにCLIENT IDとCLIENT SECRETが表示されます。
2: Consent Screenを設定する
次にConsent Screenを設定します。これを設定しないとErrorが発生してしまいます。
左メニューからAPIS & AUTH > Consent Screenを選択します。
下記画像のようにEMAIL ADDRESSとPRODUCT NAMEの2箇所を入力してSaveボタンをクリックしましょう。
3: 利用するAPIを設定する
最後に利用したいAPIの設定をONにしておきましょう。
左メニューからAPIS & AUTH > APIsを選択します。
下記画像のように利用したいAPIのSTATUSをONにしましょう。
これで設定は完了です。
続いて開発の説明に入ります。
開発編
1: GoogleからソースをGET
早速、Googleが配布しているソースをもらいに行きます。
Googleのgtm-oauth2サイトでも書かれているようにsvnを使って、ソースを落とします。
ソースを保存する場所を決めたら、その配下で下記コマンドを実行。
1
|
|
もしかしたら、途中でRejectかtemporaryかpermanentか聞かれるかもしれません。筆者はtemporaryにしました。
ソースを落とした後は公式ドキュメントに書かれている通り、進めていきます。
2: ダウンロードしたソースを自身のXcodeプロジェクトに追加
OAuth認証機能を実装したいXcodeプロジェクトを作成します。ここにOAuthに必要なソースを追加します。
必要なソースは
・GTMOAuth2Authentication.h/m
・GTMOAuth2SignIn.h/m
・GTMHTTPFetcher.h/m
・GTMOAuth2ViewControllerTouch.h/m
・GTMOAuth2ViewTouch.xib
です。
格納場所は下記画像を見てください。
ほとんどの人がXcode5.1.1でプロジェクトを作ると思うのですが、デフォルトARC対応プロジェクトとなっていると思います。
そのため、コンパイルオプションとOther Linker Flagsを設定する必要があります。
3: Googleからダウンロードしたソースを使うために必要なFrameworkをプロジェクトに追加する
Security.frameworkとSystemConfiguration.frameworkを追加します。
4: ソースを書く
OAuth認証機能を実装するUIViewControllerをプロジェクトに追加しましょう。ここでは名前をViewControllerとします。
ViewController.mファイルのソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
|
- 実機で動作を確認
ソースが書けたら、実際にアプリを起動して見てみましょう。
認証画面が表示されます。
メールアドレスとパスワードを入力すると、認証の許可画面が表示されます。
許可をすると、開発者の作成する画面に戻ります。
さて、いかがだったでしょうか?
今回はGoogle APIの利用まで書いていませんが、OAuthができてしまえば、そんなに難しくはないでしょう。たぶん笑
参考:
・gtm-oauth2でOAuth認証してgoogleのAPIを使う
・invalid_client no application name – Stack Overflow