Objective-CによるOAuth2のサンプルを作ってみた

ここ最近iPhone(iPad)アプリ開発に興味を持ってます。

ちょっとPicasaの写真を表示してみたいなと思ったところで、最近対応されたGoogleのOAuth2のサンプルのようなものがあまりなさそうなので作ってみました。といってもOAuth2自体は1に比べてシンプルなプロトコルになっているので必要性は薄いかもしれませんが、ひとつの実装例として見ていただけると幸いです。

さてGoogleのOAuth2ですが、まず準備としてこちらのサイト(http://code.google.com/intl/ja/apis/accounts/docs/OAuth2.html#Registering)の説明に従い、自分のアプリの登録を行います。この操作により自分のアカウントに関連付けられたClient IDとClient Secretが発行されます。また、ここで、redirect URIにローカルアプリ用の

urn:ietf:wg:oauth:2.0:oob

という値を登録します。

アプリからの認証の流れは以下のようになります。

  1. Client ID、サービスのスコープ(一覧)などを含めたURLのページを開き、ユーザにアクセス許可を求める
  2. ユーザにOKされたらAuthorization Codeが発行されるので、そのページのタイトルなどからAuthorization Codeを取得する
  3. 上で得られたAuthorization Code、Client ID/Secretなどを用いてGoogleサーバにAccess Tokenのリクエストを送信する
  4. 上で得られたAccess Tokenを用いて各サービスにアクセスする

で、今回作成したサンプルは以下になります。私はiPadしか持っていないためiPadアプリケーションとしてつくっております。

GitHub - maneman8000/SampleOAuth: iPad sample application of google OAuth2.0

Client IDとClient Secretは入れていないので、GitHubからソースを落としたら SampleOAuthフォルダ内に OAuth2GoogleClient.h というファイルを作成し、以下のように自分のClient IDとClient Secretを定義していただく必要があります。

#define GOOGLE_OAUTH2_CLIENT_ID @"ここに Client ID を貼り付ける"
#define GOOGLE_OAUTH2_CLIENT_SECRET @"ここに Client Secret を貼り付ける"

ビルドして実行していただくとユーザに許可を求めるページが表示されます。アカウントを入力して許可すると、自分のPicasaのアルバムのXMLがそのままTextViewに表示されます。

なお、現状ではRefresh Tokenによる権限の更新は実装していません。おいおい追加する予定です。