Skip to main content

Sign in with Instagram

:::warning Read first Instagram is not a first-class Curupira provider, and today it generally cannot complete a login. For Meta-family sign-in, use Meta / Facebook instead — Facebook Login returns a usable, confirmed email. :::

Why it's a special case

  1. No email → login refused. Curupira provisions and links accounts by verified email. Instagram Login does not return an email for normal accounts, so Curupira can't auto-provision a new user or match an existing one — the login is refused at the email gate. This is on Instagram's side, not Curupira's.
  2. Shifting OAuth surface. Instagram Basic Display was deprecated (2024-12-04). The replacement (Instagram API with Instagram Login, for Business/Creator accounts via the Meta app dashboard) has a different token/userinfo shape and still gives no reliable email. Because of that churn, Instagram is not a built-in provider and does not appear in the dashboard dropdown.

Bottom line: unless a user's Instagram profile actually returns an email (uncommon), the button appears but the login fails on the email gate — by design.

Experimental wiring (API only)

Only proceed if you specifically need Instagram and accept the email caveat above. Because instagram has no built-in endpoints, you supply them yourself in the connection's extra_config, and you must create the connection via the admin API (the dashboard dropdown can't select it):

  1. In the Meta App Dashboard (developers.facebook.com/apps), add the Instagram product / Instagram API with Instagram Login, and register the redirect https://auth.curupira.api.br/sso/instagram/callback. You'll get an Instagram App ID + App Secret (same Business Verification / App Review burden as Meta).

  2. Create the connection via the admin API, supplying the endpoints in extra_config:

    curl -X POST https://admin.curupira.api.br/api/admin/sso-connections \
    -H 'Content-Type: application/json' -b cookies.txt \
    -d '{
    "tenant_id": "<tenant-uuid>",
    "provider": "instagram",
    "client_id": "<instagram-app-id>",
    "client_secret": "<instagram-app-secret>",
    "scopes": ["instagram_business_basic"],
    "enabled": true,
    "extra_config": {
    "authorize_url": "https://www.instagram.com/oauth/authorize",
    "token_url": "https://api.instagram.com/oauth/access_token",
    "userinfo_url": "https://graph.instagram.com/me?fields=id,username"
    }
    }'

    The exact URLs/scopes/fields depend on which Instagram product you enabled — confirm them against Meta's current Instagram-login docs before saving. extra_config endpoint URLs are validated (public HTTPS only) on create/update.

  3. Once saved and enabled, the login page renders a "Continue with Instagram" button, but it will still fail for any user whose Instagram doesn't return an email — expected.

If you'd like Instagram as a proper one-click provider, that requires a product decision about emailless accounts — contact your Curupira administrator.

Checklist (experimental)

  • Understood: Instagram usually returns no email → login refused by design
  • Considered Meta / Facebook instead (recommended)
  • Instagram product added in the Meta app; redirect registered
  • Connection created via admin API with extra_config URLs (not the dropdown)
  • Verified the URLs/scopes against Meta's current Instagram-login docs