最近のWebアプリはOAuthが多いので、練習がてらやってみました。
#余計なもんが多いのは気にしないでくださいw
基本的には以前C#で書いたもののObjective-C版です。
Objective-Cで書くにあたって、ほとんどこちらを参考にさせてもらいました
OAuthCoreはこちらです
構成
githubにあげているコードの他に CacooOAuthKey.h というファイルがあり、こんな構成になっています。
#define CONSUMER_KEY @"xxxxxxxxxxxxxxxxxxxx" #define CONSUMER_KEY_SECRET @"xxxxxxxxxxxxxxxxxxxx"
認証からデータ取得までのサンプル
int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... NSLog(@"Hello, World!"); OAuthConsumer *consumer = [[OAuthConsumer alloc] init:CONSUMER_KEY consumerSecret:CONSUMER_KEY_SECRET]; NSString *AuthorizeURL = [Cacoo receiveRequestToken:consumer]; NSLog(@"AuthorizeURL:%@", AuthorizeURL ); char PIN[32] = ""; NSLog(@"PIN:" ); scanf("%s", PIN); NSString *pin = [[NSString alloc]initWithCString:PIN]; NSLog(@"PIN:%@", pin ); [Cacoo receiveAccessToken:consumer pin:pin]; NSString *result = [Cacoo receiveRequest:@"https://cacoo.com/api/v1/account.xml" consumer:consumer]; NSLog(@"result:%@", result); [pool drain]; return 0; }
出力
2010-12-30 03:01:19.897 CacooOAuthSample[4809:a0f] Hello, World! 2010-12-30 03:01:19.900 CacooOAuthSample[4809:a0f] +[Cacoo receiveRequestToken:] 2010-12-30 03:01:20.501 CacooOAuthSample[4809:a0f] AuthorizeURL:https://cacoo.com/oauth/authorize?oauth_token=xxxxx&oauth_token_secret=xxxxx&oauth_callback_confirmed=true 2010-12-30 03:01:20.501 CacooOAuthSample[4809:a0f] PIN: 123456789 2010-12-30 03:01:30.641 CacooOAuthSample[4809:a0f] PIN:123456789 2010-12-30 03:01:30.642 CacooOAuthSample[4809:a0f] +[Cacoo receiveAccessToken:pin:] 2010-12-30 03:01:30.776 CacooOAuthSample[4809:a0f] +[Cacoo receiveRequest:consumer:] 2010-12-30 03:01:30.920 CacooOAuthSample[4809:a0f] result:<?xml version="1.0" encoding="utf-8"?> <account> <name>kaorun55</name> <nickname>かおるん</nickname> <type>cacoo</type> <imageUrl>https://cacoo.com/account/kaorun55/image/32x32</imageUrl> </account>
まとめ
これでObjective-CでのOAuthの使い方がだいたい分かったので、今回やりたかったmixiへのアクセスをやってみよう。