Instagram アカウント紐付け・アクセストークン取得(IG Harness セットアップ編 #3)
Shudesu
Author
Instagram アカウント紐付け・アクセストークン取得(IG Harness セットアップ編 #3)
Meta アプリを作って Live にしたら、次に IG ビジネスアカウントを紐付けてアクセストークンを取得する。「App Secret」と「Access Token」を混同しがちなので、まずその違いから。
App Secret と Access Token の違い
| 項目 | App Secret | Access Token |
|---|---|---|
| 用途 | Webhook 署名検証、OAuth フロー | Graph API 呼び出し |
| 数 | 1つ(アプリごと) | IG アカウントごとに1つ |
| 有効期限 | 無期限(任意のタイミングで再生成可能) | 60日(long-lived token) |
| 場所 | Dashboard トップ「基本」 | Instagram API setup 画面 |
| 保管先 | Worker の IG_APP_SECRET secret | Worker の IG_ACCESS_TOKEN secret |
実際にやると、Dashboard で最初に目に入るのが App Secret(32桁の16進数)なので「これがトークン!」と勘違いしてコピペしがち。Access Token は別の画面の「トークンを生成」ボタンを押して取得する別物。
App Secret の例: <APP_SECRET_HEX>(32桁 16進数)
Access Token の例: <LONG_LIVED_ACCESS_TOKEN>(200〜300文字、IGAA... で始まる)
長さが全然違うので、混同したら即気付けるが、どっちが何かは知っておく必要がある。
ステップ1: Instagram アカウントをアプリに追加
左メニュー「Instagram」→「API setup with Instagram business login」
画面に「Instagram アカウント」セクションがあり、「Instagramアカウントを追加」ボタン。
ここで2通りの追加方法:
方法A: テスターロール招待(Development モード時)
自分の IG ビジネスアカウントをテスターとして招待。
- 「Instagram テスターの役割を割り当て」
- Instagram ユーザー名を入力(例:
your-ig-account) - 招待送信
方法B: OAuth ログイン(Live モード時)
アプリの埋め込み URL を開いて OAuth フローで連携。これは主にエンドユーザーの IG アカウントを SaaS に連携させる場合に使う。
自己利用なら方法A で OK。
ステップ2: IG アプリ側で招待を承認
招待した IG アカウントの Instagram アプリ(スマホ)で承認作業:
- Instagram アプリを開く
- 「プロフィール」→「設定とアクティビティ」
- 「ウェブサイトのアクセス許可」
- 「テスター招待」に Meta Developer アプリ名が表示されている
- 「承認」ボタン
承認しないとアカウント追加が完了しない。通知が埋もれがちなので、招待後スマホでチェックする。
実例: test-account と your-ig-account の2つの IG アカウントを紐付け。スマホで両方それぞれログインし直して承認する必要があった。
ステップ3: アクセストークン生成
アプリダッシュボードの Instagram API setup 画面、ステップ2のテーブルにアカウント名が表示される:
| Instagramアカウント | トークン | Webhook サブスクリプション |
|---|---|---|
| test-account | 「トークンを生成」 ボタン | オフ |
| your-ig-account | 「トークンを生成」 ボタン | オン |
「トークンを生成」ボタンを押すと、ポップアップで長いアクセストークン(200〜300 文字)が表示される。この画面を閉じると再表示できないので必ずコピーする。
コピーし忘れても、同じボタンで何度でも再発行可能。ただし再発行すると古いトークンは失効する点に注意。他のサービスで使っていたら影響する。
ステップ4: Worker にトークンを投入
printf '%s' "<LONG_LIVED_ACCESS_TOKEN>" | wrangler secret put IG_ACCESS_TOKEN
必ず printf '%s' を使う。echo だと末尾に改行が入って URL の一部になり、API 呼び出しで妙なエラーになる(詳細は wrangler secret の改行罠)。
合わせて Instagram-Scoped User ID も投入:
printf '%s' "<IG_USER_ID>" | wrangler secret put IG_USER_ID
User ID は Dashboard 画面(アカウント名の下に表示)または以下で取得:
curl "https://graph.instagram.com/v21.0/me?fields=id,username&access_token=$TOKEN"
ステップ5: 60日の寿命と自動延長
Meta が発行するトークンは long-lived token で有効期限60日。延長するには /refresh_access_token エンドポイントを叩く:
curl "https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=<current>"
制約:
- トークン発行から24時間経過していないと refresh 不可(Meta がエラーを返す)
- refresh すると
expires_in(60日 = 5184000 秒)付きで新トークンが返る - 以降は60日以内に再度 refresh すれば延長が回り続ける
IG Harness では Cron (5分毎) で自動 refresh 実装済み(src/lib/ig-token.ts)。手動運用ならカレンダーに60日置きのリマインダーを設定する必要あり。
ステップ6: 複数アカウント管理
1つの Meta アプリに複数の IG ビジネスアカウントを紐付けられる。各アカウントに対して独立したアクセストークンが発行される。
IG Harness の現行実装はシングルテナント(env.IG_ACCESS_TOKEN と env.IG_USER_ID 一組のみ)のため、複数アカウント運用するには:
- オプション1: Worker を複数 deploy(ig-harness-a, ig-harness-b ...)
- オプション2: コードを書き換えて
accountsテーブル + トークンを D1 で管理
ManyChat のような SaaS 化を目指すならオプション2が必要。
チェックリスト
- IG アカウントをテスターとして追加
- IG アプリ内で招待を承認
- 「トークンを生成」でアクセストークン取得(忘れずコピー)
-
printfでIG_ACCESS_TOKENとIG_USER_IDを Worker に投入 -
curl /me?access_token=...で正しい username が返るか確認
次は Webhook 設定完全ガイド へ。
コメント (0)
コメントするにはログインしてください。