2014/01/28

SimpleAuthを使って、Instagramの写真を取得できるようにする

先日、SimpleAuthというWebサービス認証のためのライブラリが公開されました。

これは、次のようなサービスの認証を簡単にしてくれます。

  • Twitter
  • Facebook
  • Instagram
  • 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 件のコメント:

コメントを投稿

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