Facebook API Page Token Exchange Pattern

Compiled Truth

The system user token alone is insufficient for accessing Facebook Page posts and insights via the API. A page-level token must be derived from the system user token using a specific exchange endpoint. The app_id parameter in this exchange is mandatory — omitting it causes the derived token to lose its pages_read_engagement scope. [Source: Hugh session memory 2026-06-09.md, 2026-06-09]

Exchange Endpoint

GET /{page-id}?fields=access_token&app_id={app_id}&access_token={system_user_token}
  • app_id: 1643802343404744 (Hugh Stats Reader app)
  • These page tokens expire and must be re-derived each session at runtime.

Credentials (via 1Password)

Org1Password Vault Item
UBI Worksyqq2lzg7n3xou62jb3lqw63s2u (system user token)
Common Wealth256uorkeff7ouzc6fhq26p262a (system user token)

Analytics Status (as of 2026-06-09)

  • FB posts/insights: ✅ working via this page token exchange
  • IG reach/impressions: ✅ tokens include instagram_manage_insights
  • X @ubi_works: ✅ working (OAuth 1.0a user tokens in 1P item sz66lmmksckgtqmra23ukcot2u)
  • X @commonwealth_ca: ⚠️ still needs user-level OAuth 1.0a PIN flow
  • YouTube (UW + CW): ✅ both brand account tokens on disk, scopes: youtube.readonly + yt-analytics.readonly (not affiliated with Google Workspace)
  • Bluesky: ✅ public API, no auth needed
  • TikTok: ❌ needs app review + brand account linkage; browser automation only
  • FB App Review: ⚠️ not yet submitted — pages_read_engagement + others queued in “Not submitted” state

Timeline

  • 2026-06-09 | Pattern discovered and documented. Ken and Hugh confirmed FB/X/IG/YouTube working. @commonwealth_ca X tokens and FB app review remain outstanding. [Source: Hugh session memory 2026-06-09.md, 2026-06-09]