Instagram Graph APIのビジネスアカウントIDとアクセストークン取得

  • Updated: 2023.08.08
  • Published: 2022.11.01
  • 840views
  • API
  • Instagram
  • Node.js

概要

WEBサイトにインスタグラムの写真を埋め込むために必要なビジネスアカウントIDとアクセストークン取得方法です。
3段階目のアクセストークンまでの発行をスクリプトにしました。


用意するもの

  • instagramプロアカウント
  • Facebookページ
  • Facebookアプリ

必要なデータ


ソース

github


パッケージ

{
  "dependencies": {},
  "devDependencies": {
    "dotenv": "^8.2.0",
    "request": "^2.88.2"
  }
}

設定ファイル

.env

「.env_sample」を「.env」にファイル名変更して使用します。

access_token1 = '[1段階目のアクセストークン]'

client_id = '[FacebookアプリID]'
client_secret = '[Facebookアプリ app secret]'

facebook_page_ID = '[FacebookページID]'

スクリプト

var request = require('request');
require('dotenv').config();

let access_token1 = process.env.access_token1;
let access_token2;
let access_token3;

let client_id = process.env.client_id;
let client_secret = process.env.client_secret;

let facebook_page_ID = process.env.facebook_page_ID;

let url1 = '';
let url2 = '';
let url3 = '';
let url4 = '';

let ID = '';

function init(){
    url1 += 'https://graph.facebook.com/v6.0/oauth/access_token';
    url1 += '?grant_type=fb_exchange_token';
    url1 += '&client_id=' + client_id;
    url1 += '&client_secret=' + client_secret;
    url1 += '&fb_exchange_token=' + access_token1;

    request.get(url1, function(err, res, body) {
      if (err) {
        console.log('Error: ' + err.message);
        return;
      }

      let json = JSON.parse(body);

      if(json.error){
        console.log('error');
      }else{
        access_token2 = JSON.parse(body).access_token;
        secondToken();
      }

    });    
}

function secondToken(){
    url2 += 'https://graph.facebook.com/v6.0/me';
    url2 += '?access_token=' + access_token2;

    request.get(url2, function(err, res, body) {
        if (err) {
          console.log('Error: ' + err.message);
          return;
        }
        ID = JSON.parse(body).id;
        thirdToken();
    });
}
function thirdToken(){
    url3 += 'https://graph.facebook.com/v6.0/' + ID;
    url3 += '/accounts?access_token=' + access_token2;

    request.get(url3, function(err, res, body) {
        if (err) {
          console.log('Error: ' + err.message);
          return;
        }
        let datas = JSON.parse(body).data;

        const list = datas.find(item => {
            return item.id === facebook_page_ID;
        });

        access_token3 = list.access_token;

        fourthToken();
    });
}

function fourthToken(){
  url4 += 'https://graph.facebook.com/v6.0/me';
  url4 += '?access_token=' + access_token3;
  url4 += '&debug=all&fields=instagram_business_account&format=json&method=get&pretty=0&suppress_http_code=1&transport=cors';

  request.get(url4, function(err, res, body) {
    if (err) {
      console.log('Error: ' + err.message);
      return;
    }
    let datas = JSON.parse(body);

    console.log(datas.instagram_business_account.id);
    console.log(access_token3);
  });
}

///////////////////////
init();

実行

node index.js

ターミナルで実行します。


確認できるフォームを作りました

access_token
client_id
client_secret
facebook_page_ID
ID
アクセストークン
async function main(obj) { try { const token = await getHtml(obj); document.querySelector('#get-insta-id [name="result1"]').value = token.id; document.querySelector('#get-insta-id [name="result2"]').value = token.access_token; } catch (error) { console.error(`エラーが発生しました (${error})`); } } async function getHtml(data){ url = `/api/get_insta.php?access_token1=${ data.access_token1 }&client_id=${ data.client_id }&client_secret=${ data.client_secret }&facebook_page_ID=${ data.facebook_page_ID }`; return fetch(url) .then(function(response) { if (!response.ok) { return Promise.reject(new Error(`${response.status}: ${response.statusText}`)); }else{ return response.text(); } }).then(data => { // const parser = new DOMParser(); // const doc = parser.parseFromString(data, "text/html"); // doc.querySelectorAll('[itemprop="channelId"]').forEach((item)=>{ // channel_id = item.getAttribute('content'); // }); return JSON.parse(data); }); } ////// let $button = document.querySelector('#get-insta-id button'); $button.addEventListener('click',()=>{ let obj = { access_token1 : document.querySelector('#get-insta-id [name="access_token1"]').value, client_id : document.querySelector('#get-insta-id [name="client_id"]').value, client_secret : document.querySelector('#get-insta-id [name="client_secret"]').value, facebook_page_ID : document.querySelector('#get-insta-id [name="facebook_page_ID"]').value }; main(obj); },false);

関連記事

人気の投稿

最新の投稿

タグ

月別アーカイブ

Contact

WEB制作の依頼など気軽にお問い合わせください。

お問い合わせ