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