【Python】Instagram Graph APIの動作チェック|インスタアクセストークンのデバッグ方法

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • Python環境でInstagram Graph APIを活用したい
  • Instagram Graph APIを正常に呼出できているのか動作確認したい
目次

【Python】Instagram Graph APIの動作チェック

本記事ではPython環境でInstagram Graph API機能を活用したい方向けに、API呼出が正常にできているか確認するための方法を解説します。

Instagram Graph APIの利用には次のような事前対応が必要です。

InstagramとFacebookの環境設定

  • Instagramプロアカウントの開設
  • Meta Business Suiteにアカウントを登録
  • FacebookとInstagramをリンク

Meta for DevelopersでAPI認証情報を取得

  • Meta for Developersに開発者として登録
  • アクセストークン
  • アプリID&アプリシークレット
  • インスタグラムビジネスアカウントID

API利用に際して、上記の対応が未済の方は、以下の記事を参考にご対応ください。

Pythonモジュールのインストール

本記事での動作チェックでは、以下のPythonモジュールを活用します。インストールが未済の方は、ターミナルやコマンドプロンプトをもとに以下を実行しておきましょう。

requests

pip install requests

pprint

pip install pprint

【事前準備】Instagram Graph APIの認証用関数を作成

はじめに、Instagram Graph APIを使用するための、API認証用関数を作成します。

認証には以下のコードを用い、XXXX部分を必要な認証情報に書き換えて利用しましょう。

import requests
import json
import datetime
from pprint import pprint

def basic_info():
    # 初期
    config = dict()
    # 【要修正】アクセストークン
    config["access_token"]         = 'XXXXXXX'
    # 【要修正】アプリID
    config["app_id"]               = 'XXXXXXX'
    # 【要修正】アプリシークレット
    config["app_secret"]           = 'XXXXXXX'
    # 【要修正】インスタグラムビジネスアカウントID
    config['instagram_account_id'] = "XXXXXXX"
    # 【要修正】グラフバージョン
    config["version"]              = 'v14.0'
    # 【修正不要】graphドメイン
    config["graph_domain"]         = 'https://graph.facebook.com/'
    # 【修正不要】エンドポイント
    config["endpoint_base"]        = config["graph_domain"]+config["version"] + '/'
    # 出力
    return config

【事前準備】Instagram Graph API呼出関数を作成

続いて、インスタグラム Graph APIを呼び出す関数を作成します。

以下のコードをそのままコピー&ペーストしましょう。

import requests
import json
import datetime
from pprint import pprint

# APIリクエスト用の関数
def InstaApiCall(url, params, request_type):
    
    # リクエスト
    if request_type == 'POST' :
        # POST
        req = requests.post(url,params)
    else :
        # GET
        req = requests.get(url,params)
    
    # レスポンス
    res = dict()
    res["url"] = url
    res["endpoint_params"]        = params
    res["endpoint_params_pretty"] = json.dumps(params, indent=4)
    res["json_data"]              = json.loads(req.content)
    res["json_data_pretty"]       = json.dumps(res["json_data"], indent=4)
    
    # 出力
    return res

Instagram Graph API呼出関数の動作チェック

前述の認証用関数とAPI呼出関数を用いて、以下のデバッグ関数を実行しましょう。

コード

def debugAT(params):
    # エンドポイントに送付するパラメータ
    Params = dict()
    Params["input_token"]  = params["access_token"]
    Params["access_token"] = params["access_token"]
    # エンドポイントURL
    url = params["graph_domain"] + "/debug_token"
    # 戻り値
    return InstaApiCall(url, Params, 'GET')


# リクエスト
params   = basic_info()       # リクエストパラメータ
response = debugAT(params)    # レスポンス

# レスポンス
pprint(response)

出力イメージ

# {'endpoint_params': {'access_token': 'XXXXX',
#                      'input_token': 'XXXXXX'},
#  'endpoint_params_pretty': '{\n'
#                            '    "input_token": '
#                            '"XXXXX",\n'
#                            '    "access_token": '
#                            '"XXXXX"\n'
#                            '}',
#  'json_data': {'data': {'app_id': '1234567',
#                         'application': 'App',
#                         'data_access_expires_at': 12345678,
#                         'expires_at': 0,
#                         'granular_scopes': [{'scope': 'pages_show_list',
#                                              'target_ids': ['12345']},
#                                             {'scope': 'pages_read_engagement',
#                                              'target_ids': ['12345']}],
#                         'is_valid': True,
#                         'issued_at': 1234567,
#                         'scopes': ['pages_show_list',
#                                    'ads_management',
#                                    'business_management',
#                                    'instagram_basic',
#                                    'instagram_manage_comments',
#                                    'instagram_manage_insights',
#                                    'instagram_content_publish',
#                                    'instagram_manage_messages',
#                                    'pages_read_engagement',
#                                    'public_profile'],
#                         'type': 'USER',
#                         'user_id': '1234567'}},
#  'url': 'https://graph.facebook.com//debug_token'}

上記のように、レスポンスにエラーが出力されなければ正常にAPIが呼び出しできています。

【参考】Instagram Graph APIが正常に呼び出せない理由

前述のコード実行後にエラーが発現した場合、以下の理由でInstagram Graph APIが呼び出せていない可能性があります。

  • FacebookとInstagramがリンクしていない
  • アクセストークン発行時にInstagram利用の権限が正しく付与されていない
  • App ID・Appシークレットが間違っている
  • インスタグラムビジネスアカウントIDが間違っている
  • APIのバージョンが間違っている

【参考】インスタグラム・その他SNSの運用効率化

当サイトではSNS運用を効率化するための方法を多数解説しています。

Instagram Graph APIを活用したインスタ運用の自動化

カテゴリ記事名
API利用手順Instagram Graph APIの使い方・認証手順・できること
API利用手順Instagram Graph APIの動作チェック
API利用手順有効期限を長期化したアクセストークン取得
インスタ運用効率化Instagramユーザー情報取得
インスタ運用効率化Instagramに投稿したメディア情報取得
インスタ運用効率化Instagramハッシュタグの検索結果取得
インスタ運用効率化Instagramに写真や動画をアップロード
インスタ運用効率化Instagramメディア・ユーザーインサイト取得

インスタグラム自動運用ツールでインスタ運用を効率化

Python言語で構築することに障壁がある方向けに、ノーコードかつ手軽にインスタグラム運用・管理ができるようになるツールを紹介します。Pythonで実装したインスタ機能と上記システム機能を比較し、お好みの方法を選択できると良いですね。

Twitter運用の効率化

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次