読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

iPhoneアプリ開発記(8):Objective-C & OAuth で Cacoo API にアクセスする

iOS

最近の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へのアクセスをやってみよう。