DEV Community

Cover image for The Meta App Review trap: every permission approved, login still broken
Jonas Nguyen
Jonas Nguyen

Posted on Originally published at jonasnguyen.com

The Meta App Review trap: every permission approved, login still broken

To post to Facebook Pages, Instagram and Threads on someone else's behalf, an app needs Meta to approve each permission through App Review: you describe the use, record a screencast of it, and wait.

Clienzo went through that and passed. Then it did not work.

The symptom

Accounts with a role on the app — me — could connect Facebook fine. Everyone else saw Meta's login dialog say that Facebook Login was "currently unavailable for this app, since we are updating additional details for this app."

That message points you towards business verification, data protection forms, app settings. I checked all of them. None of it was the problem.

The cause

The login dialog itself needs Advanced Access to public_profile. Without it, Meta does not degrade gracefully — it blocks the whole dialog for anyone who is not on the app's team.

The part that cost the most time: asking Meta's API for the app's permissions reported public_profile as live the entire time. That field does not tell Standard Access and Advanced Access apart. The only reliable place to check is the Advanced Access column in the App Review section of the dashboard.

After requesting Advanced Access, Facebook, Instagram and Threads worked for every customer.

Two apps, two reviews

Threads is its own app on Meta's side, so it has its own review. And when Clienzo later added a comment inbox and post insights, those permissions needed a second round of review — again split across the two apps.

One more trap from that round: for a Business Login app, some permissions are declared in the Meta dashboard's login configuration, not in code. Changing the code does nothing for those. Others — Threads, and Instagram's own login — are the opposite. I wrote down which is which, because I will not remember next time.

What I would tell myself

  • If login fails only for people without a role, check Advanced Access for public_profile first.
  • Do not trust status: live as proof of Advanced Access.
  • Record the screencast as you build the feature, not the night before you submit.

Both review rounds are approved now. Next: Google, where passing verification turned out not to be the end either.


Originally published on jonasnguyen.com, where I write about building Clienzo and the next startups.

Top comments (0)