iOS Facebook, Google APIの利用 – 認証
iOSでFacebook、GoogleのAPIの利用に必要な認証を試してみました。
どちらもiOS用にライブラリが用意されています。ライブラリのチュートリアルのサイトもあり、iOS開発の基本的な知識があれば簡単に試すことができます。
二つのライブラリについて簡単にですがまとめたいと思います。
Facebook APIの認証について
Facebookの認証ではSSO(Single Sign-On)が提供されています。
対象のアプリケーションが動くデバイスでFacebookのiOSアプリケーションがインストールされていてユーザーが認証を行っていた場合には、
ユーザーが対象のアプリケーションに許可を与える際、ユーザー名、パスワードを入力する必要はありません。
またFacebookのiOSアプリケーションがインストールされていない場合はSafariで認証画面を開くなど、環境に応じた動きも組み込まれていて、ライブラリの利用者が意識する必要はありません。
ライブラリ
https://github.com/facebook/facebook-ios-sdk
チュートリアルのURL
http://developers.facebook.com/docs/mobile/ios/build/
使い方
アプリケーションデリゲートクラスにFBSessionDelegateの各メソッドを実装して、次の2行で終わりです。
認証が終わったFacebookクラスでGraph APIなどのRequestを送ることができます。
// YOUR_APPLICATION_IDにはFacebookにアプリケーションを登録した時に取得したApp ID Facebook *facebook = [[Facebook alloc] initWithAppId:@"YOUR_APPLICATION_ID" andDelegate:self]; // PERMISSYON_ARRAYに必要なパーミッションの文字列を入れたNSArrayを設定する。 // デフォルトのパーミッションで良い時はnilを設定 ;
注意事項
- FBSessionDelegateは、アプリケーションデリゲートクラスに実装する必要があるようです。ViewControllerなどに実装しても上手く行きません。
- チュートリアルにありますがアプリケーションのproperty listファイルに項目の追加が必要です。
Google APIの認証について
Cocoaアプリケーション用に、OAuth2.0のライブラリが提供されています。
iOSでは認証用のViewを表示するViewControllerが提供されています。
Google APIの利用には、別途Google API用のObjective-CライブラリやGoogle data API用のライブラリが提供されています。
認証とAPI利用のライブラリが分かれていてFacebookのライブラリほどは簡単に利用はできませんが、認証のライブラリはGoogle以外のOAuth2.0にも利用できるようです。
ライブラリ
http://code.google.com/p/gtm-oauth2/
チュートリアルのURL
http://code.google.com/p/gtm-oauth2/wiki/Introduction
使い方
認証用のViewControllerを作成して、コールバックメソッドなどを設定してNavigationControllerにpushします。
ユーザーが認証、アプリケーションへの承認を終えるとコールバックメソッドにAPIアクセスに必要なトークンを含んだGTMOAuth2Authenticationが返されます。
GTMOAuth2ViewControllerTouch *authController; // SCOPEは認証時に指定する必要案APIのスコープ // CLIENT_ID,CLINET_SECRETはGoogle APIにアプリケーションを登録した時に取得したClient ID, Client secret // KEYCHAIN_NAMEはアプリケーションとAPIサービスを識別する為の任意の文字列。トークンを保存するときに使用する。 authController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:SCOPE clientID:CLIENT_ID clientSecret:CLINET_SECRET keychainItemName:KEYCHAIN_NAME delegate:self finishedSelector:@selector(viewController:finishedWithAuth:error:)]]; : : - (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error { if (error != nil) { // Authentication failed } else { // Authentication succeeded // authを保存してAPIアクセスに利用する } }
注意事項
- GoogleのOAuth2.0用のライブラリを利用するには、Security.framework、SystemConfiguration.frameworkの追加が必要です。