先日、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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。