昨日に引き続きOAuthでmixi API にアクセスしてみました。
mixi の OAuth は 2.0 らしいのですが、特別なライブラリも必要なく簡単でいいですね:)
#「application/x-www-form-urlencoded形式」がよくわからなかったので文字は化けますが、、、
今回の参考はこちらです
ほかにmixiの応答がJSONなので、Objective-CのJSONライブラリを利用しました
構成
githubにあげているコードの他に MixiOAuthKey.h というファイルがあり、こんな構成になっています。
#define CONSUMER_KEY @"xxxxxxxxxxxxxxxxxxxx" #define CONSUMER_KEY_SECRET @"xxxxxxxxxxxxxxxxxxxx"
認証からプロフィール取得、ボイスへの投稿までのサンプル
#import <Foundation/Foundation.h> #import "Mixi.h" #import "MixiOAuthKey.h" int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Mixi *mixi = [[Mixi alloc] init:CONSUMER_KEY consumerSecret:CONSUMER_SECRET]; // Aauthorize request URLの作成 NSString *urlString = [mixi getAauthorizeRequestURL:@"r_profile w_voice"]; NSLog(@"Aauthorize request in this page :%@", urlString); NSLog(@"Please input redirest url's 'code' parameter :"); char code[128] = ""; scanf("%s", code); // Access Tokenの取得 [mixi getAccessToken:[[NSString alloc] initWithCString:code] redirectURI:@"http://example.com/callback"]; // プロフィールの取得 NSDictionary *dict = [mixi getPeople]; for ( NSString *key in [dict keyEnumerator] ) { NSLog(@"key:%@, value:%@", key, [dict objectForKey:key]); } // ボイスへ投稿 [mixi postVoice:@"from application post"]; // insert code here... NSLog(@"Hello, World!"); [pool drain]; return 0; }
出力
2010-12-30 22:27:05.814 MixiOAuthSample[6992:a0f] Aauthorize request in this page :https://mixi.jp/connect_authorize.pl?client_id=xxxxxxxx&response_type=code&scope=r_profile%20w_voice 2010-12-30 22:27:05.817 MixiOAuthSample[6992:a0f] Please input redirest url's 'code' parameter : xxxxxxxx 2010-12-30 22:27:19.062 MixiOAuthSample[6992:a0f] key:entry, value:{ displayName = "\U304b\U304a\U308b\U3093"; id = y3rwjmxosja5b; profileUrl = "http://mixi.jp/show_friend.pl?uid=y3rwjmxosja5b"; thumbnailUrl = "http://profile.img.mixi.jp/photo/user/y3rwjmxosja5b_3024363630.jpg"; } 2010-12-30 22:27:19.063 MixiOAuthSample[6992:a0f] key:itemsPerPage, value:1 2010-12-30 22:27:19.063 MixiOAuthSample[6992:a0f] key:totalResults, value:1 2010-12-30 22:27:19.063 MixiOAuthSample[6992:a0f] key:startIndex, value:0 2010-12-30 22:27:19.140 MixiOAuthSample[6992:a0f] Hello, World!