インスタAPIを触る Part2(アクセストークン取得編)

技術

今回は、Graph APIを使うためアクセストークンを取得します。

3段階あるので、それぞれすべて取得します。

1段階目のアクセストークン取得

グラフAPIエクスプローラ - Meta for Developers

Meta for Developer の、上部メニューのツールから、「グラフAPIエクスプローラ」を選択。

右メニューで、それぞれ以下に設定。

  • Facebookアプリ:前回記事で作成したアプリ名
  • ユーザーまたはページ:トークンを取得
  • アクセス許可:「許可を追加」を選択して、以下を追加
    • business_management
    • page_manage_* (adsなどいくつかあるが、全て)

そして、Generate Access Token ボタンを選択すると、トークンが作成されるので、メモ帳などに保存しておきます。
このトークンが、1段階目のアクセストークンとなります。

なおアクセストークンは古くなるので、その場合は同じ手順で最新のものを取得してください。

2段階目のアクセストークン

以下のURLにアクセスします。

https://graph.facebook.com/v4.0/oauth/access_token?grant_type=fb_exchange_token&client_id=【アプリID】&client_secret=【app secret】&fb_exchange_token=【1段階目のアクセストークン】

その際、前回の記事で取得した、アプリIDとapp secret、そして前述の項目で取得した1段階目アクセストークンを上記URLに当て込みます。

そうすると、以下のようなリクエストが返ってきます。

{“access_token”:”【アクセストークン】”,”token_type”:”xxxxx”,”expires_in”:xxxxx}

access_tokenの値が、2段階目のアクセストークンとなります。

3段階目のアクセストークン

まずは必要なIDを取得するために、以下のURLにアクセスします。

https://graph.facebook.com/v4.0/me?access_token=【2段階目のアクセストークン】

すると、以下のようなレスポンスが返ります。

{
   "name": "xxxxx",
   "id": "【ID】"
}

このレスポンスのid項目内にあるIDを取得して、次は以下URLにアクセスします。

https://graph.facebook.com/v4.0/【取得したID】/accounts?access_token=【2段階目のアクセストークン】

そうすると以下のようなレスポンスが返ります。

{
"data": [
{
"access_token": "【アクセストークン1】",
"category": "xxxxx",
"category_list": [xxxxx],
"name": "【ページ名1】",
"id": "xxxxx",
"tasks": [xxxxx]
},
{
"access_token": "【アクセストークン2】",
"category_list": [xxxxx],
"name": "【ページ名2】",
"id": "xxxxx",
"tasks": [xxxxx]
}
],
"paging": {
"cursors": {
"before": "xxxxx",
"after": "xxxxx"
}
}
}

data[]内に配列的に各ページのデータが入っているので、インスタと連携しているページのアクセストークンを保存します。これが、3段階目アクセストークンです。

なおその際、インスタと連携しているページがどれか判断する方法なのですが、name項目でページ名を確認します。
しかし日本語(などのマルチバイト文字)を含んだページ名である場合、unicodeでエンコードされているため、これをデコードしてページ名を確認します。

アクセストークンのチェック

3段階目のアクセストークンまで取得できたら、それが正しいかどうかを以下URLのアクセストークンデバッガーでチェックします。

登录 Facebook
登录 Facebook,与好友、家人和认识的人分享和建立联系。

上記アクセストークンデバッガーで、アクセストークンを入力し「デバッグ」を選択すると、アクセストークン情報が出てくるので、そこにスコープ等情報が出て来ればOKです。

インスタのビジネスアカウントIDを取得

GraphAPIエクスプローラで、パラメータを以下のように入力して「送信」を選択します。

me?fields=accounts{instagram_business_account,name}

{
  "accounts": {
    "data": [
      {
        "instagram_business_account": {
          "id": "xxxxx"
        },
        "name": "ページ名1",
        "id": "xxxxx"
      },
      {
        "name": "ページ名2",
        "id": "xxxxx"
      }
    ],
    "paging": {
      "cursors": {
        "before": "xxxxx",
        "after": "xxxxx"
      }
    }
  },
  "id": "xxxxx"
}

name項目のページ名から、インスタを連携したページのinstagram_business_accountの値を確認し、これがインスタのビジネスアカウントIDとなります。

まとめ

これで、APIを実行する準備が出来ました。(記事にすると意外と長い。。。)

具体的には、API実行に必要な、第3段階アクセストークンインスタのプロアカウントIDを取得できました。

次回の記事で、試しにAPIを実行してそのレスポンスを確認してみたいと思います。