先日、SimpleAuthというWebサービス認証のためのライブラリが公開されました。
これは、次のようなサービスの認証を簡単にしてくれます。
- Tumblr
- Dropbox
- Foursquare
- Meetup
これを使って、Instagramの写真を取れるようにしてみました。
SimpleAuthのインストール
CocoaPodsでやりました。
pod 'SimpleAuth/Facebook'
ディベロッパキーの取得
まず、Instagram Developerでディベロッパになっておきます。
続いて、Manage Clientsからクライアントを作成します。Client IDは後で利用します。
使いたいAPIはAPI Consoleで試しておくとよいでしょう。
SimpleAuthを使う
まず、インポートしておきます。
#import <SimpleAuth.h>
次に、-viewDidLoadあたりで次のようにして、SimpleAuthのInstagramの設定をしておきます。
client_idにはInstagramのディベロッパサイトでもらったIDを入れておきます。
SimpleAuth.configuration[@"instagram"] = @{
@"client_id": @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
SimpleAuthRedirectURIKey: @"tweetbottle://safx-dev.blogspot.com/"
};
あとは、次のような感じで認証して、アクセストークンを取得するようにします。
[SimpleAuth authorize:@"instagram" completion:^(id responseObject, NSError *error) {
if (!error)
self.instagramToken = [responseObject valueForKeyPath:@"credentials.token"];
}];
実行すると、authorize:completion:の呼び出しで、次のようなビューが表示されます。
利用例
例えば、以前作ったサンプルアプリ向けで、ポピュラーな写真だけ取り出すようなコードは、次のようになります。
- (void)addInstagramPhotos {
if (self.instagramToken) {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"https://api.instagram.com/v1/media/popular" parameters:@{@"access_token":self.instagramToken} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray* thumbnails = [responseObject valueForKeyPath:@"data.images.thumbnail.url"];
@synchronized(self) {
self.queue = Underscore.flatten(@[thumbnails, self.queue]);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
} else {
[SimpleAuth authorize:@"instagram" completion:^(id responseObject, NSError *error) {
self.instagramToken = [responseObject valueForKeyPath:@"credentials.token"];
[self addInstagramPhotos];
}];
}
}




0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。