Posting to Facebook Programmatically

Vincent Delacourt
3 min readOct 15, 2024

--

Postman

If you cannot wait please find the postman:

https://www.postman.com/pa2bra/panda-post-social/collection/166iemh/facebook

But I strongly recommend reading the details below to fill in the environment variables.

Step 1: Set up a Facebook Developer Account and Create an App

  1. Go to Facebook Developers and sign up or log in.
  2. Click on “My Apps” and then “Create App”.
  3. Choose “Business” as the app type.
  4. Fill in the app details and create the app.

Step 2: Obtain Access Tokens

Use the Graph API Explorer tool to generate a user access token with the following permissions:

  • pages_manage_posts
  • pages_read_engagement

Step 3: Exchange this short-lived token for a long-lived token:

Finding Your App ID (client_id) and App Secret (client_secret)

  1. Go to Facebook Developers
  2. Click on “My Apps” in the top right corner
  3. Select your app from the dropdown menu
  4. In the left sidebar, click on “Settings” and then “Basic”
  5. You’ll find your App ID and App Secret on this page

Remember to keep your App Secret confidential and never share it publicly.

curl -i -X GET "https://graph.facebook.com/v21.0/oauth/access_token?grant_type=fb_exchange_token&client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&fb_exchange_token=SHORT_LIVED_ACCESS_TOKEN"

Refreshing Long-Lived Tokens for Facebook

Long-lived tokens for Facebook typically last for about 60 days. However, you can refresh them before they expire to get a new long-lived token. Here’s how to do it using curl:

curl -i -X GET "https://graph.facebook.com/v13.0/oauth/access_token
?grant_type=fb_exchange_token
&client_id=YOUR_APP_ID
&client_secret=YOUR_APP_SECRET
&fb_exchange_token=EXISTING_LONG_LIVED_ACCESS_TOKEN"

Replace the following:

  • YOUR_APP_ID: Your Facebook App ID
  • YOUR_APP_SECRET: Your Facebook App Secret
  • EXISTING_LONG_LIVED_ACCESS_TOKEN: The long-lived token you want to refresh

This will return a new long-lived access token. The expiration time of the new token is reset to about 60 days from when this call is made.

Note: You only need to manually refresh the token if you haven’t used it for nearly 60 days.

Step 4: Get your Facebook Page access token:

curl -i -X GET "https://graph.facebook.com/v21.0/me/accounts?access_token=YOUR_LONG_LIVED_USER_ACCESS_TOKEN"

You will get a list of all the pages that you manage.

For the page you need to post, find the page id and the page access token.

Step 5: Create a Post

Create a post with an image:

curl -i -X POST \
"https://graph.facebook.com/v21.0/PAGE_ID/photos" \
-F "url=IMAGE_URL" \
-F "caption=Your photo caption here" \
-F "access_token=YOUR_PAGE_ACCESS_TOKEN"

Replace PAGE_ID, IMAGE_URL, and YOUR_PAGE_ACCESS_TOKEN with your actual values.

Error Handling

Common errors you might encounter:

  1. (#200) Access token is invalid or has expired
  • Solution: Refresh your access token

2. (#10) Application does not have permission for this action

  • Solution: Ensure you have the correct permissions

3. (#4) Application request limit reached

  • Solution: Implement rate limiting in your requests

Example error response:

{
"error": {
"message": "Invalid OAuth access token.",
"type": "OAuthException",
"code": 190,
"fbtrace_id": "AbCdEfGhIjKlMnO"
}
}

Best Practices

  1. Implement proper error handling and retry logic
  2. Use a library for making API calls (e.g., requests for Python) for better error handling
  3. Store access tokens securely (e.g., use environment variables, never hardcode them)
  4. Implement a token refresh mechanism to keep your long-lived token valid
  5. Respect Facebook’s community standards and terms of service
  6. Test thoroughly in a development environment before going live

Always refer to the official Facebook Graph API documentation for the most up-to-date information.

--

--

Vincent Delacourt
Vincent Delacourt

Written by Vincent Delacourt

Interesting in start-up or project development in the latest technologies for web and mobile apps

No responses yet