データ取得ハンズオン付 Instagram Graph APIの始め方

Instagram Graph API

Instagram Graph APIとは?

Instagram Graph APIは、ビジネス or クリエイターアカウントを持つユーザーが、自分のInstagramのデータをプログラムを通じてアクセス・管理するためのツールです。上手く活用することで、投稿のスケジューリングをしたり、投稿・フォロワーのインサイト取得など、活用の仕方は多岐にわたります。公式ドキュメントは下記です。

InstagramグラフAPI - Instagramプラットフォーム - ドキュメンテーション - Meta for Developers
InstagramグラフAPIの使用方法

この記事では、まったくのゼロからのスタートで、Instagram Graph APIを用いて自身の投稿に関するインサイト情報を取得するまでの手順をまとめます。

ゼロからはじめるInstagram Graph API

Facebookアカウントの作成

InstagramアカウントにはFacebookアカウントを利用して間接的にアクセスする仕様のため、まずはFacebookアカウントが必要になります。下記にアクセスし、「新しいアカウントを作成」から情報入力をして新規アカウントを取得します。

Facebookにログイン | Facebook
Facebookにログインして、友達や家族と写真や近況をシェアしましょう。

Facebookアカウントが作成できたら次に、Facebookページを作成します。下記にアクセスし、「ページを作成」からFacebookページを作成します。

Facebookにログイン | Facebook
Facebookにログインして、友達や家族と写真や近況をシェアしましょう。

「ページ名」と「カテゴリ」は入力必須となっています。自身のアカウントに沿った内容を登録しましょう。「Facebookページを作成」をクリックすると、その後も入力項目は続きますが、今回は全て「次へ」でスキップします。APIを利用する上では特に入力しなくても問題ありません。

Instagramアカウントの作成

次にInstagramアカウントを作成していきます。下記にアクセスし、「Facebookでログイン」から先ほど作成したFacebookアカウントからInstagramアカウントを作成します。

Instagram
Create an account or log in to Instagram - A simple, fun & creative way to capture, edit & share pho...

アカウントが作成できたら、作成したアカウントをビジネス or クリエイターアカウントに変更します。「設定」に移動します。

「アカウントの種類とツール」を選択。

「プロアカウントに切り替える」をクリック。

自身のアカウントに沿ったアカウントタイプを選択してください。

最終的に下記まで進めばOKです。

FacebookページとInstagramアカウントの連携

InstagramアカウントにはFacebookアカウントを利用して間接的にアクセスする仕様のため

Facebookアカウント作成時に述べた上記の理由から、FacebookアカウントとInstagramアカウントの紐づけを行わなければなりません。これはFacebookページにInstagramアカウントをリンクすることで実現できます。自身のFacebookページに移動し、サイドメニューの「設定」をクリックします。

サイドメニューにある「リンク済みのアカウント」をクリックします。

リンク画面に遷移するので、「アカウントをリンク」をクリックします。

画面に沿って「次へ」をクリックしていくと、Instagramのログイン画面が表示されるので、先ほどの工程で作成したInstagramアカウントでログインをします。

以下の画面が表示されればOKです。もしここで、「ログイン情報を保持するか?」という旨の表示が出た場合は、保持するを選択してください。

Facebookアプリを作成

Facebookアプリを作成していきます。下記にアクセスし、「利用を開始する」をクリックします。

Meta for Developers
Facebook for Developersを活用して、人と人のつながりを広げましょう。AI、ビジネスツール、ゲーム、オープンソース、パブリッシング、ソーシャルハードウェア、ソーシャル統合、バーチャ...

「次へ」をクリック。

電話番号を入力し、SMS認証を完了させます。

メールアドレスを入力し、メールアドレス認証を完了させます。

自身のアカウントタイプを選択し、登録を完了させます。

登録が完了したら下記の画面に遷移するので、「アプリを作成」からFacebookアプリを作成します。

以下のような画面に遷移するので、「その他」を選択し、「次へ」をクリックします。

以下のような画面に遷移するので、「ビジネス」を選択し、「次へ」をクリックします。

各種情報を入力し、アプリ作成を完了させます。ビジネスアカウントには先ほど作成したFacebookアカウントを指定してください。

アクセストークンの発行

下記にアクセスし、「グラフAPIエクスプローラ」をクリックします。

開発者ツール - Meta for Developers
グラフAPIエクスプローラやアクセストークンデバッガーなどのFacebook開発者ツールにアクセスできます。

「Metaアプリ」に記載されているアプリ名が先ほど作成したアプリ名であることが確認できたら、「許可を追加」から赤枠で囲った以下の許可を追加し、「Generate Access Token」をクリックします。

  • business_management
  • instagram_basic
  • instagram_manage_insights
  • pages_read_engagement
  • pages_show_list

以下のウィンドウが出るので、ガイドに従って進んでいきます。

ここまでくればトークンが取得できます。以下の赤枠で囲った部分がそのトークンです。

しかし、このトークンは有効期限が短い(1時間)トークンのため、有効期限が切れれば再度ログインして同様にトークンの再発行をする必要があります。それだと都度手間なので、この短期トークンを利用して、無期限のトークンを取得します。

Facebookアプリのダッシュボードに移動し、「アプリの設定」>「ベーシック」をクリックします。

ここに表示されている「アプリID」と「app secret」を利用して以下のURLにアクセスします。

  • {アプリID}
  • {app_secret}
  • {アクセストークン}

にはご自身の環境の値を入力ください。

https://graph.facebook.com/v18.0/oauth/access_token?grant_type=fb_exchange_token&client_id={アプリID}&client_secret={app_secret}&fb_exchange_token={短期アクセストークン}

すると、以下のようなJSONデータが表示されます。「access_token」に表示されているのが長期トークンになります。このトークンは2カ月の有効期限があります。このトークンを利用して、無期限のトークンを取得します。

{
  "access_token": "{長期アクセストークン}",
  "token_type": "bearer"
}

まず、取得したトークンを利用して以下のURLにアクセスします。

  • {アクセストークン}

にはご自身の環境の値を入力ください。

https://graph.facebook.com/v18.0/me?access_token={長期アクセストークン}

すると、以下のようなJSONデータが表示されます。「id」に表示されている値をメモしてください。

{
   "name": "xxxxx",
   "id": "{id}"
}

この値と、トークンの値を利用して以下のURLにアクセスします。

  • {id}
  • {長期アクセストークン}

にはご自身の環境の値を入力ください。

https://graph.facebook.com/v18.0/{id}/accounts?access_token={長期アクセストークン}

すると、以下のようなJSONデータが表示されます。「access_token」に表示されているものが、無期限のトークンになります。

{
   "data": [
      {
         "access_token": "{無期限アクセストークン}",
    ... 以下省略 ...
}

自分の投稿のインサイトを取得する

先ほど取得したトークンを利用して以下のURLにアクセスします。

  • {無期限アクセストークン}

にはご自身の環境の値を入力ください。

https://graph.facebook.com/v18.0/me?fields=instagram_business_account&access_token={無期限アクセストークン}

すると、以下のようなJSONデータが表示されます。「ig-user-id」部分に表示されている値をメモしてください。

{
   "instagram_business_account": {
      "id": "{ig-user-id}"
   },
   "id": "xxxxx"
}

この値と、トークンの値を利用して以下のURLにアクセスします。

  • {ig-user-id]
  • {無期限アクセストークン}

にはご自身の環境の値を入力ください。

https://graph.facebook.com/v18.0/{ig-user-id}/media?access_token={無期限アクセストークン}

すると、以下のようなJSONデータが表示されます。「media-id」部分に表示されている値をメモしてください。このidは投稿ごとに振られた固有のidになります。

{
   "data": [
      {
         "id": "{media-id}"
      }
   ],
   "paging": {
      "cursors": {
         "before": "QVFIUndiVUdDM2gxUDFBS2RYeTczODhMMG54cmFKZAlhiSGc1bDVyN3VteGhyR21yZAGZAhWUxzVklQSTBCLXdXRmNycmRwWFV6ODVSZAmdDbnhvM2ZAjYzFubXdB",
         "after": "QVFIUndiVUdDM2gxUDFBS2RYeTczODhMMG54cmFKZAlhiSGc1bDVyN3VteGhyR21yZAGZAhWUxzVklQSTBCLXdXRmNycmRwWFV6ODVSZAmdDbnhvM2ZAjYzFubXdB"
      }
   }
}

この値と、トークンの値を利用して以下のURLにアクセスします。

  • {media-id}
  • {無期限アクセストークン}

にはご自身の環境の値を入力ください。

https://graph.facebook.com/v18.0/{media-id}/insights?metric=total_interactions,impressions,reach,saved&access_token={無期限アクセストークン}

すると、以下のようなJSONデータが表示されます。これが投稿に関するインサイト情報になります。

{
   "data": [
      {
         "name": "impressions",
         "period": "lifetime",
         "values": [
            {
               "value": 0
            }
         ],
         "title": "\u30a4\u30f3\u30d7\u30ec\u30c3\u30b7\u30e7\u30f3",
         "description": "\u30e1\u30c7\u30a3\u30a2\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5408\u8a08\u30d3\u30e5\u30fc\u6570\u3067\u3059",
         "id": "{media-id}/insights/impressions/lifetime"
      },
      {
         "name": "reach",
         "period": "lifetime",
         "values": [
            {
               "value": 0
            }
         ],
         "title": "\u30ea\u30fc\u30c1",
         "description": "\u30e1\u30c7\u30a3\u30a2\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u898b\u305f\u30e6\u30cb\u30fc\u30af\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u5408\u8a08\u6570\u3067\u3059",
         "id": "{media-id}/insights/reach/lifetime"
      },
      {
         "name": "saved",
         "period": "lifetime",
         "values": [
            {
               "value": 0
            }
         ],
         "title": "\u4fdd\u5b58",
         "description": "\u30e1\u30c7\u30a3\u30a2\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4fdd\u5b58\u3057\u305f\u30e6\u30cb\u30fc\u30af\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u5408\u8a08\u6570\u3067\u3059",
         "id": "{media-id}/insights/saved/lifetime"
      },
      {
         "name": "total_interactions",
         "period": "lifetime",
         "values": [
            {
               "value": 0
            }
         ],
         "title": "\u6295\u7a3f\u3067\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3",
         "description": "\u6295\u7a3f\u3078\u306e\u300c\u3044\u3044\u306d\uff01\u300d\u3001\u4fdd\u5b58\u3001\u30b3\u30e1\u30f3\u30c8\u3001\u30b7\u30a7\u30a2\u306e\u4ef6\u6570\u304b\u3089\u3001\u300c\u3044\u3044\u306d\uff01\u300d\u306e\u53d6\u308a\u6d88\u3057\u3001\u4fdd\u5b58\u306e\u53d6\u308a\u6d88\u3057\u3001\u30b3\u30e1\u30f3\u30c8\u306e\u524a\u9664\u306e\u4ef6\u6570\u3092\u5f15\u3044\u305f\u6570\u3067\u3059\u3002",
         "id": "{media-id}/insights/total_interactions/lifetime"
      }
   ]
}

日本語の部分はunicodeとなっていますが、Chromeの場合、拡張機能のJSON Formatterを入れると、はじめから日本語が表示された状態で見ることができます。

今回は投稿が1つだけだったので、そのままの流れでインサイト取得のAPIを呼び出しましたが、どの投稿にどのIDが振り分けられているかを確認する方法としては、IDを用いて投稿の詳細を取得することがあります。以下は例ですが、投稿につけられたキャプションを取得するAPIは下記です。

https://graph.facebook.com/v18.0/{media-id}?fields=caption&access_token={無期限アクセストークン}

最後に

以上が、Instagram Graph APIを用いて投稿のインサイトを取得するまでの手順でした。ここまで読んでいただき、ありがとうございます。

Instagram Graph APIにはハッシュタグにまつわる投稿を取得するAPIもあるので、例えば、ハッシュタグにまつわる投稿を集めて共起分析をして、何か面白いことができたらと考えています。思いついたら記事にします。


コメント

タイトルとURLをコピーしました