【2026年最新】Meta広告APIで「無期限アクセストークン」を取得する手順

広告運用の自動化やデータ抽出をGASやPythonで構築する際、60日ごとのトークン手動更新は意外と馬鹿にならないボトルネックです。ROIを最大化し、ビジネスの利益をスケールさせる自動化の仕組み作りに集中するためにも、一度設定すれば保守不要になる「無期限トークン」の取得は必須と言えます。

しかし最近のMetaのアップデートにより、ビジネス設定の管理画面から「無期限(期限なし)」を選択して手軽に発行することができなくなりました。

この記事では、API(コマンドライン)を経由して、現在でも無期限のシステムユーザートークンを確実に発行する手順をわかりやすく解説します。

⚠️ 事前知識:なぜエラー(#100)が起きるのか?

API経由でトークンを発行しようとすると、(#100) This method must be called with appsecret_proof. というエラーに遭遇することがあります。

アプリのセキュリティ設定で「App Secretをオンにする」をオフにしていても、「無期限トークンの発行」という強力な権限を伴う操作に対しては、Meta側が強制的に暗号化署名(appsecret_proof)を要求してくるのが現在の仕様です。本記事では、この署名の生成手順も含めて解説します。

準備するもの

作業を始める前に、Meta for Developersとビジネス設定画面から以下の4つの情報をテキストエディタ等に控えておきましょう。

  1. アプリID
  2. アプリシークレット(アプリ設定 > ベーシックから取得)
  3. システムユーザーID(ビジネス設定 > ユーザー > システムユーザーから取得)
  4. 対象アプリのバージョン(今回は v24.0 とします)

手順1:アプリを「ライブモード」にする

ここを見落としがちですが、アプリが「開発モード」のままだと、無期限でリクエストしても強制的に有効期限が付与されてしまうケースがあります。

  • Meta for Developersの画面上部で、アプリの状態が「ライブモード」になっていることを必ず確認してください。

手順2:一時的な管理者トークンを取得する

まずは、APIを叩くための「一時的なカギ」を取得します。

  1. グラフAPIエクスプローラを開きます。
  2. 対象のアプリを選択します。
  3. 許可(Permissions)に business_management を追加します。
  4. 「Generate Access Token」をクリックし、発行された短い文字列をコピーして控えます。

手順3:暗号化署名(appsecret_proof)を生成する

ここが一番の山場です。手順2で取得したトークンとアプリシークレットを掛け合わせて、安全性を証明する署名を作ります。

Macの「ターミナル」(Windowsの場合はGit BashやWSLなど)を開き、以下のコマンドの {} 部分をご自身の情報に書き換えて実行してください。

echo -n "{手順2で取得した一時的な管理者トークン}" | openssl dgst -sha256 -hmac "{アプリシークレット}"

実行すると、(stdin)= 1a2b3c4d5e... のように英数字の羅列が出力されます。この 1a2b3c4d5e... の部分が 「暗号化署名(appsecret_proof)」 です。

手順4:無期限トークンを発行する

いよいよ本番のコマンドを実行します。同じくターミナルで、以下のコマンドの {} 部分をすべて書き換えて実行します。

curl -X POST -F "business_app={アプリID}" -F "scope=ads_management,ads_read" -F "access_token={手順2で取得した一時的な管理者トークン}" -F "appsecret_proof={手順3で生成した暗号化署名}" "https://graph.facebook.com/v24.0/{システムユーザーID}/access_tokens"

コマンドが成功すると、画面に以下のようなデータが返ってきます。

{"access_token": "EAA..."}

この EAA... で始まる文字列こそが、待ち望んだ無期限のシステムユーザートークンです!

手順5:有効期限の最終確認

念のため、取得したトークンが本当に無期限になっているか確認しましょう。

  1. アクセストークンデバッガーにアクセスします。
  2. 取得した EAA... のトークンを貼り付けて「デバッグ」をクリックします。
  3. 有効期限(Expires)の項目が「受け取らない(Never)」になっていれば完璧です。

まとめ

画面上からポチッと発行できなくなったのは少し手間ですが、この手順を踏めば現在でも無期限トークンの取得は可能です。

一度セットしてしまえば、GASや実行環境のトークン切れによるエラー対応から解放されます。浮いた時間を、本来注力すべきマーケティング戦略の構築やクリエイティブの改善に当てていきましょう!

BLOG

ブログ

PAGE TOP