Set up a Facebook Developer account to auto-upload & schedule Reels
September 15, 20267 min read
To publish and schedule Reels straight to a Facebook Page, Reel Hearth talks to the Graph API using a Page access token generated from your own Meta Developer app — created and stored on your machine, never on ours. This guide walks through registering that app, granting it the right permissions, and turning a token that expires in an hour into one that never expires.
Register as a Meta Developer
Go to developers.facebook.com and log in with the personal Facebook account that already manages your Page.
Click My Apps → Get Started in the top-right corner, accept the Meta Developer Terms, and verify the account via phone number or credit card if prompted.
Create a Meta app
- From the App Dashboard, click Create App.
- When asked what the app should do, choose Other, then select Business as the app type — this is the type that unlocks Page and Reels publishing permissions.
- Give it a display name (e.g.
reelhearth-uploader), add a contact email, and click Create App.
Add permissions and generate a user token
Open the Graph API Explorer and set it up:
- Under Meta App, select the app you just created; under User or Page, choose User Token.
- In Permissions, search for and add
pages_show_list,pages_read_engagement, andpages_manage_posts. - Click Generate Access Token and approve the permissions modal for your Page.
- Copy the resulting string — this is a short-lived user token that expires in an hour or two, and it's only a stepping stone to the permanent token in the next step.
Exchange it for a never-expiring Page access token
Grab your App ID and App Secret from App Settings → Basic, then run these two calls — pasting each URL straight into a browser works fine.
First, exchange the short-lived token for a 60-day long-lived user token:
https://graph.facebook.com/v19.0/oauth/access_token?grant_type=fb_exchange_token&client_id=APP_ID&client_secret=APP_SECRET&fb_exchange_token=SHORT_LIVED_TOKEN
Then use the access_token from that response to call /me/accounts:
https://graph.facebook.com/v19.0/me/accounts?access_token=LONG_LIVED_USER_TOKEN
The response lists every Page you manage. Each entry's access_token is your permanent Page access token, and its id is the Page ID — save both. A Page token derived from a 60-day user token has no expiration date; it only stops working if you change your Facebook password or remove the app.
Verify it with the Access Token Debugger
Open the Access Token Debugger, paste in the Page access token, and confirm three things before moving on:
- Type reads
Page, notUser. - Expires reads
Never. - Data Access Expires reads
Never(or a clearly extended date).
If any of those show a countdown instead, the token was minted from a short-lived user token directly — go back to step 4 and redo the exchange before wiring it into anything.
Add the credentials to Reel Hearth
In the dashboard, open Accounts and choose Connect Facebook Page. Paste in the Page access token and Page ID from step 4.
Both are copied into Reel Hearth's local config directory on your machine and used directly against the Graph API from there — nothing passes through a Reel Hearth server. With the Page connected, open a subject's queue and set publish slots the same way you would for YouTube; run a dry run first to confirm the pipeline end-to-end before letting it publish for real.
Where your credentials actually live
- The Page access token and Page ID are stored only in Reel Hearth’s local config directory on your machine.
- Nothing is sent to a Reel Hearth server — there isn’t one. The dashboard only answers to the machine it runs on.
- Revoke access anytime from your Page’s Settings → Business Integrations, or by removing the app under your Facebook account’s App and website settings; Reel Hearth will simply prompt you to reconnect.
Common snags
Debugger shows an expiration date on the Page token
This almost always means the Page token was generated straight from the Graph API Explorer's short-lived token, skipping the long-lived exchange in step 4. Redo the two-call exchange — the permanent token only comes from a Page token derived from a 60-day user token.
Page missing from the /me/accounts response
The Facebook account used to generate the token must be an admin on the Page, and the app must be in a role (admin, developer, or tester) that account holds — check under App Roles in the App Dashboard.
"Insufficient permissions" when publishing
Double-check all three permissions from step 3 were approved in the consent modal — Meta silently drops a scope if it's added after the token was already generated, so regenerate the token any time a permission is added or changed.
Token stops working after going live
A never-expiring token still needs the app's permissions approved for production use if you're publishing for anyone beyond the Page admins and app testers — submit the relevant permissions for App Review under App Review → Permissions and Features once you're past testing.