xAuthでOpenID化 | モンスター・ラボTech/Designブログ

モンスター・ラボTech/Designブログ

株式会社モンスター・ラボのテクノロジスト、デザイナーによる持ち回りブログです。

はじめまして。新米スマートフォンのプログラマーの李です。

ベテランのプログラマーには物足りない内容になるかもしれませんが、新米スマートフォンプログラマーの皆さんのご参考になれば幸いです。

スマートフォンアプリと言えば、ソーシャル性。ソーシャル性と言えばSNS。そしてSNSといえば、Twitter、Facebook、mixiが浮かびます。
それで、私もすこし今話題なSNSとの連携サービス(通称OpenID)についてすこし書きたいと思います。

ウィキで
OpenIDの解釈は下記のリンクになります。
http://ja.wikipedia.org/wiki/OpenID

分かりやすく説明すると、「今有名なSNSなどのアカウントを使って、登録なしで他の新規サービスを使う」のことを指しています。
例えば、FaceBookのIDを使って、ソーシャルグルメアプリ「レッティ(Retty)」に登録なしでログインすることができます。

では、いよいよ本番です。
ここは、IpnoneアプリとTwitterを例としてご説明します。
xAuthを使って簡単にOpenID化できます。
XauthTwitterEngineというライブラリを使って簡単にxAuthを使えます。

大雑把な流れをご説明します。

▼アプリをTwitterに登録
 http://twitter.com/oauth_clients/new で開発中のアプリTwitterに登録し(Twitterアカウントが必要です)、Consumer key や Consumer secret など開発用な重要情報を取得します。
api@twitter.comに自分のアプリ情報URL、Twitterアカウントを記入し、xAuthを有効にして欲しいという旨のメールを送ると、一日か二日後、xAuthは使えるようになったという返事メールが来ると思います

▼ XauthTwitterEngineをプロジェクトに導入
https://github.com/aral/XAuthTwitterEngineXAuthTwitterEngineDemoをダウンロードして、XAuthTwitterEngineDemo.xcodeprojをXcodeで開きます。
その中のLibraries/Libraries & Headersの下のすべてのファイルを他のプロジェクトの同じ場所にコピーすれば、導入が完了します。

▼XauthでOpen ID機能を実装
■初期値を設定

 twitterEngine.consumerKey = kOAuthConsumerKey;

 twitterEngine.consumerSecret = kOAuthConsumerSecret; 


 アクセストークンを取得
NSString *username = @"monstar@twitter";
NSString *password = @"monstarTwitter"
 [twitterEngineexchangeAccessTokenForUsername: username
 password:password];   

 アクセストークンを一回取得できたら、cachedTwitterXAuthAccessTokenStringForUsernameでアクセストークンをキャッシュに保存しますので、cachedTwitterXAuthAccessTokenStringForUsernameを実装

- (NSString *)cachedTwitterXAuthAccessTokenStringForUsername:(NSString *)username {

NSString *accessTokenString = [[NSUserDefaults standardUserDefaultsobjectForKey:kCachedXAuthAccessTokenStringKey];

LOG(@"About to return access token string: %@", accessTokenString);

return accessTokenString;

}


■アクセストークンの取得の結果は「成功→ storeCachedTwitterXAuthAccessTokenString」、「失敗→ twitterXAuthConnectionDidFailWithError」と分けられているので、
storeCachedTwitterXAuthAccessTokenStringとtwitterXAuthConnectionDidFailWithErrorを実装

- (void) storeCachedTwitterXAuthAccessTokenString: (NSString *)tokenString forUsername:(NSString *)username
{
	[[NSUserDefaults standardUserDefaults] setObject:tokenString forKey:kCachedXAuthAccessTokenStringKey];
	//ここでアクセストークンをキャッシュに保存}
- (void) twitterXAuthConnectionDidFailWithError: (NSError *)error;
{
	//必要な業務
NSLog(@"Error: %@", error);
}

■ツイート
        NSString *tweetText = @"Monstar's Open ID Tweet!";
[self.twitterEngine sendUpdate:tweetText];

以上の要素だけで、iphoneアプリとTwitterのツイート連携ができました。アカウントを多く持つのも忘れやすいです。xAuthを使えば、スマートフォンアプリにOpenIDのサービスを手軽に提供できますので、皆さんもぜひやってみてください。