Instagram API


基本的な使い方は上記のサイトに丁寧にまとめられている。

【注意すべき点】


他のユーザーと関わりのあるメソッドの使用にはかなり慎重な制限がかけられている。
例えば、Likeをつけたり削除したりするPOST・DELETEメソッドや、写真にコメントするPOST・DELETEメソッドなどにはかなり慎重な制限がかけられており、単純にパラメータを付与してAPIを叩けばよいというものになっていない。

それについてはコチラ(http://instagram.com/developer/restrict-api-requests/)でかなり詳しく理由が説明してあるが、要は「スパムとかそういうの防ぐためだよー!」ということだ。


①アクセストークンをヘッダに付加しなければならないメソッド一覧
POST /users/{user_id}/relationship
POST /media/{media_id}/comments
DEL /media/{media_id}/comments/{comment_id}
POST /media/{media_id}/likes
DEL /media/{media_id}/likes
「Manage Clients」の「EDIT」からクライアントの設定を変更し、「Enforce signed header」の部分にチェックを入れる。
そうすると、POST、DELETEメソッドを使うときに「X-Insta-Forwarded-For」という名前のHTTPヘッダが付加される。
Instagram側は「X-Insta-Forwarded-For」の内容をチェックしてからAPIを発動させるので、「X-Insta-Forwarded-For」に以下の2つの情報を付与してやればよい。

A. IPアドレス (※テストモードで通信する場合は「127.0.0.1」が利用できる)
B. Client SecretをHMAC-SHA256でハッシュ化した値
AとBを「|」で繋いで完成

【例】AFNetworking使用時にHTTP Headerに情報を付加して通信
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
       manager.requestSerializer = [AFHTTPRequestSerializer serializer];
      [manager.requestSerializer setValue:@"127.0.0.1|7e3c45bc34f56fd8e762ee4590a53c8c2bbce27e967a85484712e5faa0191688" forHTTPHeaderField:@"X-Insta-Forwarded-For"];

こんな感じ。(#^ω^)ピキピキ...


②コメントのAPIについて
コメントのAPIの使用には、あらかじめInstagramDeveloperからの許可が必要らしい。
こちら(https://help.instagram.com/contact/185819881608116)から申請して許可されないと、正しくPOSTしていてもbad authenticationになる。


【Instagram APIの闇まとめ】

①写真や動画の投稿はAPIから直接はできない(?)のでURLSchemeでInsta本体を呼び出して撮影&投稿しなければならない。既存のInsta投稿アプリはInstagramに直接交渉して利用している様子。
http://stackoverflow.com/questions/18242610/uploading-photos-to-instagram-via-your-own-ios-app
②いいね!やコメントの投稿のためのPOSTメソッド・DELETEメソッドは用意されているが、IPアドレスとハッシュ化したクライアントシークレットをHTTP Headerに付加しないといけない。(GETメソッドはパラメータとしてtoken渡せばいいだけなのに)
http://instagram.com/developer/restrict-api-requests/
③写真にコメントするためにはInstagramにAPI使用許可の申請をしないといけない。下記URLから要申請。
https://help.instagram.com/contact/185819881608116



★「127.0.0.1」は「ローカルループバックアドレス」と呼ばれる、localhost的な特殊なアドレス。テストに使うやつ。
Objective-CでHMAC-SHA256を使ってハッシュ化するプログラム
最終更新:2014年12月31日 05:18