InstagramのAPIにアクセスして自分の情報を取得しようと思った話 (自分用メモ)

APIの利用には審査が必要な場合があります

大雑把に手を出そうとしたときに、下記のポイントが理解しきれていなかったのでメモ。

Sandbox Mode

Sandbox Mode • Instagram Developer Documentation

  • 自分の情報を取得するには審査なしのサンドボックスである程度まかなえる
  • サンドボックスで取得できる情報には制限があり、すべての情報にアクセスするには審査を通過しないと利用できない

Permissions Review

Permissions Review • Instagram Developer Documentation

  • ユーザーが彼らのコンテンツを、第三者と共有するのを助ける
  • 広告主とブランドが、彼らの視聴者及びデジタルメディアの権利を、理解し運用を助ける
  • 放送社と出版社が、彼らのデジタルメディアの権利を、主張し適切な態度を助ける

APIのたたき方 (メモ)

  1. クライアントを登録する Instagram Developer Documentation
  2. 登録後に発行されるクライアントIDと必要なScopeをURLに付加する (例: https://api.instagram.com/oauth/authorize/?client_id={CLIENT-ID}&redirect_uri={Valid redirect URIs}&response_type=token&scope=public_content+likes )
  3. "Valid redirect URIs"にACCESS-TOKENが付加された形でリダイレクトされる。

Login Permissions (Scopes)

Instagram Developer Documentation

自分の"いいね!"した投稿が取れない?

https://api.instagram.com/v1/users/self/media/liked?access_token=ACCESS-TOKEN

{"pagination": {}, "data": [], "meta": {"code": 200}}

Stack Overflowにも同じ悩みが投稿されていました。
stackoverflow.com

ななめ読みしましたが、すでに"いいね!"した自分の投稿はとれないが、ACCESS-TOKENを使っていいねした投稿は見れるとのこと。

<!DOCTYPE html>
<html>

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Instagram POSTテスト</title>
</head>

<body>
<form action="https://api.instagram.com/v1/media/{media-id}/likes" method="post">
  <input name="access_token" value="ACCESS-TOKEN">
  <button>送信</button>
</form>
</body>

</html>

{"data": null, "meta": {"code": 200}}


https://api.instagram.com/v1/users/self/media/liked?access_token=ACCESS-TOKEN

(さっきPOSTした投稿のいいねのみ) とれた…!


つまり、マジメにAPIで情報を取得したいのであれば、ちゃんと設計する必要があるということですね。
できることは簡単そうだけど、どう活用するか考えないとアプリとして審査を通過できるクオリティにはならんよね。。

やりたいこと

"いいね"した投稿の整理なんやけど、アプリからしか触れんのでどうにかしたいんやけどなぁ。
しおりのアイコン (コレクション? SAVED と表記されることもあるみたい) みたいに操作性がいいわけじゃないし。
f:id:morokoshidog:20180104230242p:plain