Público vs confidencial
Nunca coloque client_secret em JavaScript no browser ou app mobile. Use cliente público + PKCE.
Fluxo em uma linha
Registrar → authorize (browser + PKCE) → token → /v1 com Bearer → refresh quando expirar → revoke ao desconectar.
Checklist de produção
- Redirect URI exata (barra final importa)
state validado no callback (anti-CSRF)
code_verifier guardado até trocar o token
- Refresh token salvo atomicamente (rotaciona a cada uso)
- Escopos mínimos na autorização
Erros comuns
Próximos passos