Help us understand the problem. What is going on with this article?

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

今回の主目的

インスタグラム グラフAPI用いて
任意のハッシュタグ付きの投稿一覧を取得する

(1)一時的なアクセストークンを取得する

まず、

https://developers.facebook.com/tools/explorer/

上記URLにアクセスして、まず短期的なアクセストークンを取得する
【トークンを取得】
【ユーザーアクセストークンを取得】
【アクセス許可を選択】

必要なアクセス許可をすべて選択する

アクセス許可を選択.png

上記の設定を行い、【アクセストークンを取得】ボタンをクリックする。
...すると?

【アクセストークンのテキストボックス内に短期的なアクセストークンがセットされる】

取得した短期的アクセストークン.png

access_token.js
//取得した短期的なアクセストークン
=> EAAKErsAk634B...........bIlOKACDUkQ4WQZDZD

(2) 前述の項目(1)の短期的なアクセストークンを利用して中長期のアクセストークンを取得する

手順1)
短期的なアクセストークンを用いて長期なアクセストークンを取得する
以下APIエンドポイントをエクスプローラーに設定する

endPointToGetLongAccessToken.js
oauth/access_token?client_id={app_id}
&client_secret={client_id}
&grant_type=fb_exchange_token
&fb_exchange_token={一時的なaccess_token}
endPoint.js
oauth/access_token?client_id=708...02&client_secret=ead15.....81d35792&grant_type=fb_exchange_token&fb_exchange_token=EAAKErsAk634B...........bIlOKACDUkQ4WQZDZD

上記APIを実行する

取得した長期的なアクセストークン)

JsonWrittenAboutLongAccessToken.json
{
  // 以下access_tokenが長期的なアクセストークン
  "access_token": "EAAKErsAk634BAJ......gZDZD",
  "token_type": "bearer"
}

!!長期的なアクセストークンの取得に成功!!

短期的なアクセストークンから長期的なアクセストークンを生成.png

取得したアクセストークンが本当に長期的なものかどうかを

https://developers.facebook.com/tools/debug/accesstoken/

上記アクセストークンデバッガーを利用して検証する。

手順2)
取得した長期的なアクセストークンを用いてインスタグラムのuser_id(instagram_business_account)を取得する
me/accounts/?access_token=EAAKErsAk634BAJ......gZDZD


{
  "data": [
    {
      "access_token": "EAAKErsAk634BAM......7F2moih1QHZADwZDZD",
      "category": "Community",
      "category_list": [
        {
          "id": "2612",
          "name": "Community"
        }
      ],
      "name": "所持しているFBページ名",
      "id": "374427202647475",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    }
  ],
  "paging": {
    "cursors": {
      "before": "Mzc0NDI3MjAyNjQ3NDc1",
      "after": "Mzc0NDI3MjAyNjQ3NDc1"
    }
  }
}

me/accounts/ のエンドポイントへそのままアクセスしても有効なインスタグラムuser_idは取得できない

instagram_business_accountを追加.png

手順3)長期的なアクセストークンからinstagram_business_accountを指定してuser_idを取得する

もう一度、下記APIエンドポイントへリクエストする
me/accounts/?access_token=EAAKErsAk634BAJ......gZDZD


{
  "data": [
    {
      "instagram_business_account": {
        "id": "17.....4732"
      },
      "id": "37442....75"
    }
  ],
  "paging": {
    "cursors": {
      "before": "Mzc0NDI3MjAyNjQ3NDc1",
      "after": "Mzc0NDI3MjAyNjQ3NDc1"
    }
  }
}

 "instagram_business_account": {
   "id": "178414.....4732"

上記、値がインスタグラムのuser_idとなる

手順4)任意のハッシュタグのIDを取得する
ig_hashtag_search?user_id=178414.....4732&q=任意のハッシュタグ&access_token=EAAKErsAk634BAJ......gZDZD


{
  "data": [
    {
      "id": "17871....7952" // 指定したハッシュタグID
    }
  ]
}

取得したハッシュタグID.png

手順5)指定したハッシュタグを含む投稿データを取得する

17871....7952/top_media?user_id=178414.....4732&access_token=EAAKErsAk634BAJ......gZDZD

上記APIエンドポイントをリクエストする


{
  "data": [
    {
      "id": "17962352788301814"
    },
    {
      "id": "17861007991441761"
    },
    {
      "id": "17878025470388830"
    },
    {
      "id": "18052193044089527"
    },
    {
      "id": "18081440428039773"
    }
  ]
}

以上の様にマッチする投稿を取得できるがこれだけでは使いようがないのでリクエストを変更する

17871....7952/top_media?user_id=178414.....4732&fields=media_url,media_type,comments_count,id,like_count,children{media_url,permalink},permalink,caption&access_token=EAAKErsAk634BAJ......gZDZD


{
  "data": [
    {
      "media_url": "https://scontent.xx.fbcdn.net/v/t51.2885-15/65149366_696019624190843_828516369249497685_n.jpg?_nc_cat=111&_nc_oc=AQl_XfViAipKSpGbPmxaX6EAeZb-NmdwkDWShyt4HbR-5P3G4NGYf3frc4-mU6lqvuk&_nc_ht=scontent.xx&oh=4b72cb3637ba0d94d0d65f9b849e7cf4&oe=5DAEF84B",
      "media_type": "IMAGE",
      "comments_count": 0,
      "id": "17962352788301814",
      "like_count": 0,
      "permalink": "https://www.instagram.com/p/BzZ9hNpgHWU/",
      "caption": "#任意のハッシュタグ"
    },
    {
      "media_url": "https://scontent.xx.fbcdn.net/v/t51.2885-15/64943720_153747419099188_2527034385322906428_n.jpg?_nc_cat=105&_nc_oc=AQnpzzE81wf5sH7y3CI7wQeCwEwjZkv6UJredX9XLNcrr4eI0-9TaW1ouyS8nmp9xkQ&_nc_ht=scontent.xx&oh=1c7db06c6fada9a6f7af63cd8930b930&oe=5DC5BCC9",
      "media_type": "IMAGE",
      "comments_count": 0,
      "id": "17861007991441761",
      "like_count": 0,
      "permalink": "https://www.instagram.com/p/BzZ-JLXAZTT/",
      "caption": "#任意のハッシュタグ"
    },
    {
      "media_url": "https://scontent.xx.fbcdn.net/v/t51.2885-15/65852688_566090620464293_1962771992173742185_n.jpg?_nc_cat=105&_nc_oc=AQnGVvnC5bdgp3-vK_Vv23h2TVDaaqDIpS56OV-jCpNqeSucsMgRwTn_5nO8rI8Bp1U&_nc_ht=scontent.xx&oh=3bfd8c5d3fe27c3e19a677dfe4f3e8c0&oe=5D809A75",
      "media_type": "IMAGE",
      "comments_count": 0,
      "id": "17878025470388830",
      "like_count": 0,
      "permalink": "https://www.instagram.com/p/BzZ-zblg-J_/",
      "caption": "#任意のハッシュタグ"
    },
    {
      "media_url": "https://scontent.xx.fbcdn.net/v/t51.2885-15/64781998_768699126878647_336778819664794768_n.jpg?_nc_cat=102&_nc_oc=AQkZSUhjDwPkN5-upyXod9hPuCFzAP1ECtOBK-iLMtmeeb2YY5DL1R2CfHWqHBs8GTE&_nc_ht=scontent.xx&oh=a1a89c4baa85825488dba51b37e2fc26&oe=5DB3C02D",
      "media_type": "IMAGE",
      "comments_count": 0,
      "id": "18052193044089527",
      "like_count": 0,
      "permalink": "https://www.instagram.com/p/BzZ-1w7gZgh/",
      "caption": "#任意のハッシュタグ"
    },
    {
      "media_url": "https://scontent.xx.fbcdn.net/v/t51.2885-15/65305698_123703315525275_6462113334552571072_n.jpg?_nc_cat=106&_nc_oc=AQmnfVlt8SUoLXOorqkLkp2AcCC_j-gVNQB1BLDR1mgZw-6pyPCVdGqhC5rhiI3ADTo&_nc_ht=scontent.xx&oh=6f0df6d0816ec1ecfe49303931057c45&oe=5DBC5B7D",
      "media_type": "IMAGE",
      "comments_count": 0,
      "id": "18081440428039773",
      "like_count": 0,
      "permalink": "https://www.instagram.com/p/BzZ-xn7AQew/",
      "caption": "#任意のハッシュタグ"
    }
  ]
}

/* 上記の様なハッシュタグを持つ投稿の詳細情報を取得できる。 */

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした