Checklist de diagnóstico
Na ordem — quase todo caso de "não loga" está aqui:
- O método de login está ligado? (Autenticação → e-mail/senha, magic link, OTP)
- Se for login social: o provider está habilitado nesse projeto? (Autenticação → cartão do provider)
- A URL de retorno está cadastrada? (Autenticação → URLs de redirecionamento) — causa nº 1 de "volta e não acontece nada"
- A Redirect URI no console do provider é
https://auth.superdb.com.br/auth/v1/callback/<provider>? - O app está passando o slug do projeto (
project) e a anon key atual? Regenerar a key invalida a anterior na hora. - O relógio do dispositivo está no automático? (diferença grande invalida tokens e códigos TOTP)
Erros comuns e soluções
invalid_credentials (401)
Causa: e-mail ou senha errados. Por design a resposta é a mesma para conta inexistente e senha errada — é proteção contra enumeração de contas, não um bug.
Solução: confira em Autenticação → Usuários se a conta existe; se existir, use o fluxo de redefinição de senha do seu app.
Muitas tentativas (429)
Causa: proteção contra força bruta — 10 tentativas falhas bloqueiam por 15 minutos (janela deslizante).
Solução: aguarde a janela. Se acontece com usuários legítimos, revise se o seu app não está reenviando a requisição em loop.
oauth_not_enabled (400)
Causa: o provider não está habilitado nesse projeto, ou está em credenciais próprias sem Client ID/Secret válidos.
Solução: ligue em Autenticação. Ver Configurar OAuth.
Login social volta pra / sem erro nenhum
Causa: o redirectTo não está na allowlist. O destino é
descartado de propósito, para não entregar token a uma URL não registrada.
Solução: cadastre a URL absoluta (ou o deep link) em Autenticação → URLs de redirecionamento.
redirect_uri_mismatch (no provider)
Causa: a URI registrada no console do provider não bate com a do SuperDB.
Solução: use exatamente
https://auth.superdb.com.br/auth/v1/callback/<provider> — sem barra final,
sem http.
email_not_confirmed
Causa: o usuário não clicou no link de confirmação.
Solução: reenvie a confirmação pelo seu app. Se os e-mails não chegam, veja templates de e-mail — o caso mais comum é domínio remetente sem SPF/DKIM caindo em spam.
otp_expired
Causa: o código OTP ou magic link foi usado depois de expirar.
Solução: solicite um novo. Códigos são de uso único — reabrir um link já usado também dá esse erro.
tenant_suspended
Causa: o projeto está suspenso (normalmente cobrança em aberto).
Solução: verifique Billing no dashboard; persistindo, fale com o suporte.
Investigando um usuário específico
Em Autenticação → Usuários, abra o usuário para ver se está banido, quando foi criado, quais identidades sociais tem vinculadas, se tem MFA ativo e a trilha de eventos da conta. É a forma mais rápida de separar "conta com problema" de "app enviando errado".