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)
| Org | 1Password Vault Item |
|---|---|
| UBI Works | yqq2lzg7n3xou62jb3lqw63s2u (system user token) |
| Common Wealth | 256uorkeff7ouzc6fhq26p262a (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]
Back-links
- ubi-works — uses this pattern for FB analytics
- common-wealth-canada — uses this pattern for FB analytics
- ken-yang — confirmed analytics transition plan
- Social-Listening — downstream consumer of this data