Meta Marketing API 個人廣告主免 App Review:Development Mode 加 ads_read 實測 setup 全紀錄
直接回答
個人廣告主用 Meta Marketing API ads_insights 看自己廣告數據,不用過 App Review 也不用 Business Verification。前提是 Facebook 帳號是該廣告帳號的 admin。走 Development Mode + Standard Access + ads_read scope 三件套即可,10 分鐘建立。多數中文教學會誤導你以為要過 review。
盤算自建一個廣告四象限自動化工具的時候,挖到這條多數中文教學沒寫的點。
—
正在評估要不要做 wk-ad-quadrant 自建(從 Meta Ads API 拉廣告層級數據出 bubble chart 四象限分析)。第一個技術障礙是 Meta Marketing API 授權。
打開中文教學圈一輪,幾乎所有內容都這樣寫:
「想用 Meta Marketing API 要先過 App Review,準備好 use case 文件 + screencast,等審核 7-14 天,加上 Business Verification 要法人文件,2026 年變嚴格細節對不上會被退」
看完直接打退堂鼓的人不少。我自己也以為要花 1-2 週走流程才能開始寫。
—
實際去讀英文官方文件才發現:個人廣告主完全不用過 review。
關鍵字是「Development Mode + Standard Access + ads_read」三件套。
Standard Access 的定義:你可以對「自己 admin 的廣告帳號跟資產」用 API permission,這個權限給測試跟個人用。Advanced Access 才需要過 App Review,那是給「服務第三方帳號」「商用 SaaS」用的。
Development Mode 是 Facebook Developer App 預設模式。它是 sandbox,讓你用少數 admin 帳號測試整合,不用先過 review。Mode 一直保留在 Development 狀態合法,只要你的整合範圍不擴及第三方帳號或商用。
ads_read 是 Meta API 的唯讀 scope,給 Insights API 用。可以拉 campaign / ad set / ad / ads_insights 全部數據。動不了東西。App Review 對 ads_read 寬鬆很多。
三件套組合起來,個人廣告主想看自己廣告效益,10 分鐘可以開始 call API。
—
具體 setup 4 步驟。
第 1 步:去 developers.facebook.com/apps 建一個 App。Type 選 Business 或 None 都行。建完記下 App ID 跟 App Secret。
第 2 步:App 加 Marketing API product。Settings > Products > Add Product > Marketing API。Mode 維持 Development,不要切 Live。
第 3 步:拿短期 token。去 developers.facebook.com/tools/explorer,左上 Application 切到剛建的 App。點 Get Token > Get User Access Token,勾 ads_read。會跳 Facebook 授權對話框,按確認。拿到的 token 約 1 小時到期。
第 4 步:換 long-lived token。打:
GET https://graph.facebook.com/v22.0/oauth/access_token
?grant_type=fb_exchange_token
&client_id=APP_ID
&client_secret=APP_SECRET
&fb_exchange_token=SHORT_TOKEN
回傳新 token 60 天有效。存進 Redis 或 Neon DB。
到這裡可以開始 call /act_<AD_ACCOUNT_ID>/insights,拿廣告層級數據。
—
60 天到期 refresh 一定要做,不然 dashboard 會突然全空。
寫 cron 每 50 天(留 10 天 buffer)跑一次:
async function refreshLongLivedToken(currentToken) {
const url = `https://graph.facebook.com/v22.0/oauth/access_token`
+ `?grant_type=fb_exchange_token`
+ `&client_id=${APP_ID}`
+ `&client_secret=${APP_SECRET}`
+ `&fb_exchange_token=${currentToken}`;
const res = await fetch(url);
const data = await res.json();
return data.access_token;
}
把回來的新 token 覆蓋掉舊的。Long-lived token 可以無限續,每次 exchange 都重置 60 天。
—
Rate limit handling 也要寫,不寫高峰會被擋。
Development tier 是 200 calls/hour per ad account per Business Use Case。看 response header:
X-FB-Ads-Insights-Throttle:
{"app_id_util_pct": 12, "acc_id_util_pct": 28, "ads_api_access_tier": "development"}
任一 util_pct 超過 80,就 backoff 等下個 hour 再重試。超過 100 會直接擋。
如果你打多個 ad account 高頻拉資料,development tier 200/hr 會破。這時候才需要過 review 升 Standard Access tier。
—
什麼情況下真的要過 App Review:
- 跨夥伴廣告帳號代操(agency 模式):你想看別人的廣告數據,夥伴各自要建自己的 dev app + 自己授權,或主帳號要過 App Review 拿 Advanced Access
- 用
ads_management動廣告(建廣告 / 改預算 / 暫停):review 嚴格,要附 use case + screencast,等 7-14 天 - 要 Advanced Access 升 rate limit + 商用 / SaaS:必過 review + Business Verification
個人看自己廣告,這三條都不會碰到。
—
幾個 5/4/2026 之後的變更要注意。
AMSA(Ads Management Standard Access)改名「Marketing API Access Tier」,feature 規格收緊。
ads_insights breakdowns 不再回 reach metric,做 dashboard 不能 reach + breakdown 同時用,否則資料缺。
Long-lived token 機制本身不變,60 天到期 refresh 機制照寫。
—
整套設定完,從 0 到能 call /act_xxx/insights 拿到 JSON,10 分鐘搞定。Token refresh + rate limit handling 30 分鐘寫完。
學到的是:技術門檻有時候只是「有人沒讀完官方文件就轉述」造成的假象。中文教學圈一律抄「要過 App Review」這條,但官方文件其實寫得清楚 Development Mode 對個人開發者是開放的。下次看到「一定要 X 才能 Y」,先去英文官方確認一次再下結論。