← Back to blogs
Setup guide

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.

1

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.

2

Create a Meta app

  1. From the App Dashboard, click Create App.
  2. 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.
  3. Give it a display name (e.g. reelhearth-uploader), add a contact email, and click Create App.
3

Add permissions and generate a user token

Open the Graph API Explorer and set it up:

  1. Under Meta App, select the app you just created; under User or Page, choose User Token.
  2. In Permissions, search for and add pages_show_list, pages_read_engagement, and pages_manage_posts.
  3. Click Generate Access Token and approve the permissions modal for your Page.
  4. 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.
4

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.

5

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:

  1. Type reads Page, not User.
  2. Expires reads Never.
  3. 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.

6

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.