Facebook OAuth Needs Reconnection Issue?
Status: Open Β· Asked by EMRECAN OZKAN on Β· 0 views
Hello,
Could you please share the Workflow URL where you have this concern?
Hello there,
I hope youβre doing well. I just wanted to follow up regarding our last message.
Hello,
Could you please share the Workflow URL where you have this concern?
Thanks & Regards,
Adeel Akhtar
π Pabbly.com
Hello Arshil,
There is no Workflow URL β this issue is not in a workflow. We use the Pabbly Connect Platform API (https://connect.pabbly.com/backend/platform/v1) to create connections and vend access tokens. The problem is in the token endpoint for Facebook-platform connections.
THE PROBLEM:
For an "Instagram for Business" connection (app id IjU3NjIwNTY4MDYzNyI_3D_pc), the OAuth flow completes and the connection status reads "active". But POST /connections/{id}/token always returns:
HTTP 401
{"status":"error","message":"The access token has expired and cannot be refreshed. Please reconnect.","data":{"code":"needs_reconnection"}}
This happens immediately after a fresh authorization (within 1 minute), and on every retry. We have re-authorized from scratch three separate times, on two connections β same result every time. Reconnecting does not fix it.
DETAILS FOR YOUR TEAM:
- x-user-email: [email hidden]
- Connection id: IjU3NjUwNTY0MDYzMTA0Mzc1MjY1NTUzMTUxMzQi_pc (created 2026-08-22 18:43 UTC, status "active")
- Second reproduction: x-user-email [email hidden], connection id IjU3NjUwNTY0MDYzMTA0Mzc1MjY1NTUzNjUxMzAi_pc
CONTROL TEST THAT PROVES OUR KEY AND ACCOUNT ARE HEALTHY:
Under the same API key and same x-user-email, token vending works perfectly for Google-platform connections. A POST /connections/{id}/token on our Google Business Profile connection (IjU3NjUwNTY0MDYzMTA0MzU1MjY4NTUzMTUxMzIi_pc) returns HTTP 200 with a fresh token (expires_in: 3598), tested again today. YouTube and Gmail connections vend correctly too. Only Facebook-platform apps fail.
OUR SUSPICION:
Facebook does not issue refresh tokens β it uses long-lived token exchange instead. Your token-refresh path appears to treat the missing refresh token as "expired and cannot be refreshed", so every Facebook-based connection is unusable through the Platform API from the moment it is created.
Could you please route this to the team that owns the Platform API / connection token store?
Thank you,
Emrecan
Hello Emrecan,
Could you please record a screen video of the whole process you are following and facing the issue, if you are not using the Pabbly Connect workflow, to help us understand the issue in a better way so that we can provide help accordingly.
Thanks & Regards,
Adeel Akhtar
π Pabbly.com
Hi,
Thank you for the reply. A screen recording would not show anything useful here,
because there is no screen involved. We do not use the Pabbly Connect workflow
builder at all. We use the Platform REST API
(https://connect.pabbly.com/backend/platform/v1) server-to-server. The whole
process is three API calls, so instead of a video, here are exact steps your
team can run to reproduce the issue in under two minutes, against a live
connection on our own account (the account this ticket is filed from).
THE ISSUE IN ONE LINE
The OAuth authorization for the "Instagram for Business" app completes and the
connection shows "active", but POST /connections/{id}/token ALWAYS returns
HTTP 401 {"code":"needs_reconnection"} β even one minute after a fresh
authorization.
STEPS TO REPRODUCE
1. Create a connect link (this is how the connection below was made):
POST /connections/request-link
Headers: Authorization: Bearer <our platform key>
x-user-email: ouremail
Body: {"app_id": "IjU3NjIwNTY4MDYzNyI_3D_pc", "name": "test"}
β returns connection_id + request_link.
2. Open request_link in a browser and complete the Facebook Login dialog
(facebook.com/v14.0/dialog/oauth). We completed this successfully.
3. Read the connection β Pabbly itself reports it healthy:
GET /connections/IjU3NjUwNTY0MDYzMTA0Mzc1MjY1NTUzMTUxMzQi_pc
x-user-email: ouremail
Actual response (2026-08-25 00:17 UTC):
{"status":"success","message":"Connection fetched successfully.","data":
{"id":"IjU3NjUwNTY0MDYzMTA0Mzc1MjY1NTUzMTUxMzQi_pc","name":"Marcus Miller β
Real Estate Agent β Instagram for Business","app_id":"IjU3NjIwNTY4MDYzNyI_3D_pc",
"status":"active","created_at":"2026-08-22T18:43:20.000Z"}}
4. Vend the token β this is the failing call:
POST /connections/IjU3NjUwNTY0MDYzMTA0Mzc1MjY1NTUzMTUxMzQi_pc/token
x-user-email: ouremail
Actual response (2026-08-25 00:17 UTC):
HTTP 401
{"status":"error","message":"The access token has expired and cannot be
refreshed. Please reconnect.","data":{"code":"needs_reconnection"}}
CONTROL TEST β PROOF OUR KEY AND CALLS ARE CORRECT
The same call on a Google-platform connection under the SAME account, SAME
platform key and SAME x-user-email works every time:
POST /connections/IjU3NjUwNTY0MDYzMTA0Mzc1MjY1NTUzMjUxMzUi_pc/token
(YouTube) β HTTP 200, access_token returned, expires_in 3598.
Google Business Profile and Gmail connections vend fine as well. Only the
Facebook-platform app fails.
WE HAVE ALREADY RULED OUT A ONE-OFF
- Two separate clean authorizations on 2026-08-22 both failed the same way.
The second connection is IjU3NjUwNTY0MDYzMTA0Mzc1MjY1NTUzNjUxMzAi_pc
- We retried the vend at +1 minute, +10 minutes and +18 minutes after
authorizing β identical 401 every time. A short-lived Facebook token lives
~1-2 hours, so at +1 minute "expired" cannot be literally true.
LIKELY ROOT CAUSE FOR YOUR ENGINEERS
Facebook Login does not issue a refresh token. Long-lived Facebook tokens come
from the token-exchange endpoint (fb_exchange_token) instead. It looks like
your token vend path treats the missing refresh token as "expired and cannot
be refreshed", which would make every Facebook-platform connection fail
immediately after authorization β exactly what we observe.
Please have your engineering team run step 4 on connection
IjU3NjUwNTY0MDYzMTA0Mzc1MjY1NTUzMTUxMzQi_pc and check the server-side logs for that call.
The connection is live on our account right now and we will keep it in place
for your testing.
Happy to run any further API call you need and paste the raw response here.
Best regards,
Emrecan