Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

instagramGraphAPIについて調べてみた( v7 に合わせて修正)

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

目次

instagramFacebookに買収された関係で、それまでのInstagram APIが非推奨になり、FacebookのGraph APIに統合された。しばらくの間はAPI経由でのハッシュタグ検索ができないなどの状況があったようだが、2018年10月にはまたハッシュタグ検索も復帰した模様。

Facebook Graph API

InstagramグラフAPI - Instagramプラットフォーム

instagram Graph APIに進む前に、先にFacebook Graph APIの基本を身につけておくとよい、とある。

グラフAPI

やや古いInstagram APIはこちら。

Instagram Developer Documentation

Facebook Graph APIの使い方

access_token パラメータでnode(ページ、画像などのオブジェクト)を取得する。

詳細は アクセストークン - Facebookログイン を参照。

上記サイトの手順でとりあえずやってみる。

準備

  1. An Instagram Business Account or Instagram Creator Account インスタグラムのビジネスアカウントまたはクリエイターアカウント
  2. A Facebook Page connected to that account そのアカウントに接続されたFacebookページ
  3. A Facebook Developer account that can perform Tasks on that Page そのパージのタスクを実行できるFacebook開発者アカウント
  4. A registered Facebook App with Basic settings configured 基本設定が終わっている登録済みFacebookアプリ

最終的に得られる情報

Facebook for developer

Facebook for Developers

「アプリの作成」をクリック。

新しいアプリIDを作成

表示名に「insta」のような語を使おうとすることはできません。

「アプリIDを作成してください」をクリック

何度も失敗するとreCAPTCHAのチェックが入ります。

ダッシュボード

まず、アプリの「設定>ベーシック」で以下の情報を調べて書き留めておく。

  • アプリID
  • app secret

グラフAPIエクスプローラ

グラフAPIエクスプローラーは、パラメータを与えてやるとAPIから戻ってくる値を見ることができる、シミュレーターみたいな感じのツール。

グラフAPIエクスプローラー

1.右のドロップダウンメニュー「Facebookアプリ」から、インスタグラムに関連付けるアプリを選択する。 2.右のドロップダウンメニュー「ユーザーまたはページ」には、「ユーザーアクセストークンを取得」「アプリトークンを取得」「ページアクセストークンを取得」の3つの選択肢がある。そのうち「ユーザーアクセストークンを取得」を選ぶ。

別ウィンドウが開いてFacebookへのログインと権限許可が求められます。

3.右のドロップダウンメニュー「ユーザーまたはページ」許可を追加する。

  • business_management
  • pages_show_list 管理しているページのリストを表示する
  • instagram_basic

「manage_pages ページの管理」「publish_pages ページとして投稿する」は廃止された模様。

追加したらしっかり「GenerateAccessToken」ボタンをクリックして更新し、アクセストークンに保存しておく。

上記ユーザーアクセストークンとアプリIDとapp secretで以下にアクセス

https://graph.facebook.com/v7.0/oauth/access_token?grant_type=fb_exchange_token&client_id=【アプリID】&client_secret=【app_secret】&fb_exchange_token=【トークン】

access_tokenを書き留めておく。これが第2トークン。

https://graph.facebook.com/v7.0/me?access_token=【第2トークン】

表示されるnameidを書き留めておく。これがfacebook ID。

https://graph.facebook.com/v7.0/【Facebook ID】/accounts?access_token=【第2トークン】

表示されたaccess_tokenを書き留める。これが期限なしの第3トークン。

アクセストークンがたくさん並んでいる場合

自分が管理しているFacebookページごとにaccess_tokenが並んでいる。

\u3042のような文字列はUnicodeエスケープシーケンスと呼ばれるものなので、解読するにはデコードが必要。

Unicodeエスケープシーケンス デコード - Google 検索

Facebookページの名前が英語の場合はそのまま表示されるのでわかりやすいが、日本語の場合はエスケープシーケンスになってしまうので判読しづらい。

戻って来たデータが空っぽの場合

権限を追加した際に「GenerateAccessToken」ボタンを押し忘れた可能性が高い。

もう一度「GenerateAccessToken」ボタンをクリックしてアクセストークンを更新したら、再度トライ。

https://graph.facebook.com/v7.0/【Facebook ID】/accounts?access_token=【第2トークン】

アクセストークンデバッガー

アクセストークンデバッガー - Facebook for Developers

アクセストークンを入力して内容を確認。

「有効期限」が「受け取らない」になっていることを確認する。

ビジネスアカウント、クリエイターアカウント

instagramには「プロアカウント」という括りがアリ、「ビジネスアカウント」と「クリエイターアカウント」がある。

どう使う?Instagramに新しく追加されたクリエイターアカウント

クリエイターアカウントのススメ[Instagram]|まつだれいな|note

インスタ新機能 8 選:クリエイターアカウントからストーリー新機能まで徹底解説 【2019年版】

スマートフォンinstagramアプリからアカウント設定に入ると、「プロアカウントにする」というリンクがあるのでそこから変更することができる。

ハッシュタグ検索

GraphAPIへの移行期に一時期使えなくなっていたようですが、2,018年10月頃から、また使えるようになったみたいです。

Hashtag Search - Instagramプラットフォーム

Instagram Graph API: Hashtag Search Launch

グラフAPIを使って任意のハッシュタグを持つ投稿をインスタグラムから取得する - Qiita

【新APIに対応】ハッシュタグ投稿収集機能を実装してリニューアル!⁻SmartHash|WWSのプレスリリース

APIエクスプローラーでいろいろ試す。(v4時点の情報)

GET→/v4.0/という表記の右にある空欄に、クエリ文字列を入れていく。

ハッシュタグの画像をとりたい場合。

/ig_hashtag_search?user_id=ビジネスID&q=検索したいハッシュタグ文字列

これでハッシュタグIDを取得。

/ハッシュタグID/recent_media/?user_id=ビジネスIDでとりあえず、ハッシュタグの画像IDがずらっと出てくる。追加で欲しい項目があるなら、左ペインで取得したいフィールドを追加する。

/ハッシュタグID/recent_media/?fields=caption,media_type,media_url&user_id=ビジネスID

media_typeCAROUSEL_ALBUMのものについてはchildren{mediatype, media_url}のようにしてフィールドを追加する。

/ハッシュタグID/recent_media/?fields=caption,media_type,media_url,children{mediatype, media_url}&user_id=ビジネスID

参考記事