Autenticação Social
Como conectar login Google, Facebook, X / Twitter, GitHub, Figma, LinkedIn, Slack, Atlassian, GitLab, Bitbucket, Discord, Twitch, Amazon, Patreon, Dropbox, MetaMask ou Steam no seu app — Code Exchange OAuth na maioria; SIWE no MetaMask.
Como funciona
O login social não coloca JWTs na URL de redirect. O cliente inicia o OAuth na API, o provedor de identidade (IdP) cuida do consentimento, e a API devolve um código de uso único e curta duração. O cliente troca esse código pelos mesmos tokens do login com senha.
- Redirecione o usuário para GET /api/v1/auth/{provider}?redirect=<URL na allowlist>
- O usuário autentica no IdP; o callback da API cria ou vincula o usuário
- A API redireciona para a sua URL com ?code=<exchangeCode> (Redis, ~60s, uso único)
- O app chama POST /api/v1/auth/exchange com { code } e guarda accessToken / refreshToken
// 1) Inicie o OAuth (browser ou browser in-app)
GET /api/v1/auth/{provider}?redirect=
// 2) Após o consentimento no IdP, a API redireciona seu app:
// <redirect>?code=<código_de_exchange_único>
// 3) Troque o código por JWTs
POST /api/v1/auth/exchange
{ "code": "" }
// Resposta (mesmo formato do login com senha)
{ "user": { ... }, "accessToken": "...", "refreshToken": "..." }
Ativar um provedor
Cada provedor vem desligado por padrão. Ative no .env (carregado por google-oauth.config.ts, facebook-oauth.config.ts, twitter-oauth.config.ts, github-oauth.config.ts, figma-oauth.config.ts, linkedin-oauth.config.ts, slack-oauth.config.ts, atlassian-oauth.config.ts, gitlab-oauth.config.ts, bitbucket-oauth.config.ts, discord-oauth.config.ts, twitch-oauth.config.ts, steam-openid.config.ts e reddit-oauth.config.ts em src/config/), crie o app OAuth no IdP e aponte o callback para esta API.
- • Defina a feature flag do provedor como true (ex.: GOOGLE_AUTH_ENABLED, FACEBOOK_AUTH_ENABLED, TWITTER_AUTH_ENABLED, GITHUB_AUTH_ENABLED, FIGMA_AUTH_ENABLED, LINKEDIN_AUTH_ENABLED, SLACK_AUTH_ENABLED, ATLASSIAN_AUTH_ENABLED, GITLAB_AUTH_ENABLED, BITBUCKET_AUTH_ENABLED, DISCORD_AUTH_ENABLED, TWITCH_AUTH_ENABLED, STEAM_AUTH_ENABLED ou REDDIT_AUTH_ENABLED)
- • Preencha as credenciais e o CALLBACK_URL (caminho da API Nest, não da SPA)
- • Liste as URLs pós-login permitidas no REDIRECT_ALLOWLIST do provedor (origem web e/ou deep link mobile)
- • Opcionalmente defina *_OAUTH_DEFAULT_ROLES (valores de Role separados por vírgula) para usuários novos
- • Os valores ficam disponíveis via ConfigService nos namespaces googleOAuth, facebookOAuth, twitterOAuth, githubOAuth, figmaOAuth, linkedinOAuth, slackOAuth, atlassianOAuth, gitlabOAuth, bitbucketOAuth, discordOAuth, twitchOAuth, steamOpenId e redditOAuth
- • Siga a página do provedor abaixo para passos no console e nomes das variáveis
Integrar o cliente
Você só precisa da URL de início e de um callback que leia code e chame o exchange. As páginas de provedor têm exemplos prontos para SPA e React Native / deep links.
- • Web: navegue (ou abra popup) no endpoint de início; na rota /auth/callback, faça POST do code em /auth/exchange
- • Mobile: abra a URL de início no browser in-app; registre um deep link na allowlist; leia o code na URL de retorno e troque via HTTPS
- • Persista os tokens como já faz após POST /auth/login
- • Usuários criados só via social não têm senha local até você definir uma
Escolha um provedor
Abra o guia com setup no console do IdP, variáveis de ambiente, detalhes da API e exemplos de frontend.
Cliente OAuth no Google Cloud, env vars, endpoints e amostras web/mobile.
Guia Google →App Meta + Facebook Login, env vars, endpoints e amostras web/mobile.
Guia Facebook →X / Twitter
X Developer Portal OAuth 2.0 + PKCE, env vars, endpoints e amostras web/mobile.
Guia X / Twitter →GitHub
GitHub OAuth App, env vars, endpoints e amostras web/mobile.
Guia GitHub →Figma
App OAuth Figma, env vars, endpoints e amostras web/mobile.
Guia Figma →Sign In with LinkedIn using OpenID Connect, env vars, endpoints e amostras web/mobile.
Guia LinkedIn →Slack
Sign in with Slack (OpenID Connect), env vars, endpoints e amostras web/mobile.
Guia Slack →Atlassian
Atlassian OAuth 2.0 (3LO), env vars, endpoints e amostras web/mobile.
Guia Atlassian →GitLab
Aplicação OAuth GitLab, env vars, endpoints e amostras web/mobile.
Guia GitLab →Bitbucket
OAuth consumer Bitbucket, env vars, endpoints e amostras web/mobile.
Guia Bitbucket →Discord
Aplicação OAuth Discord, env vars, endpoints e amostras web/mobile.
Guia Discord →Twitch
Aplicação OAuth Twitch, env vars, endpoints e amostras web/mobile.
Guia Twitch →Steam
Login Steam OpenID 2.0 (não OAuth2), Web API key opcional, env vars, endpoints e amostras web/mobile. Steam nunca devolve e-mail.
Guia Steam →Amazon
Login with Amazon via OAuth2 Authorization Code, env vars, endpoints e amostras web/mobile.
Guia Amazon →Patreon
Patreon via OAuth2 Authorization Code, scopes identity, env vars, endpoints e amostras web/mobile.
Guia Patreon →Dropbox
Dropbox via OAuth2 Authorization Code, scope account_info.read, env vars, endpoints e amostras web/mobile.
Guia Dropbox →MetaMask
Sign-In with Ethereum (SIWE / EIP-4361): nonce, personal_sign, JWTs, env vars e amostras no browser.
Guia MetaMask SIWE →Web app OAuth2 Reddit, scope identity, env vars, endpoints e amostras web/mobile. Reddit nunca devolve e-mail.
Guia Reddit →Apple
Sign in with Apple OIDC form_post, JWT client secret via chave .p8, env vars, endpoints e amostras web/mobile. Nome enviado apenas no primeiro login.
Guia Apple →O que você deve garantir
- • Só coloque na allowlist redirects que você controla — open redirects são rejeitados
- • Trate códigos de exchange como segredo: uso único, TTL curto; não logue
- • POST /auth/exchange é compartilhado entre provedores; responde 503 se todos estiverem desligados
- • Contas existentes com o mesmo e-mail verificado são vinculadas (id do provedor; roles inalteradas)
Veja também
- Auth & JWT — login com senha, refresh, roles e guards
- Guia de setup Google OAuth2
- Guia de setup Facebook OAuth2
- Guia de setup X / Twitter OAuth2
- Guia de setup GitHub OAuth2
- Guia de setup Figma OAuth2
- Guia de setup LinkedIn OpenID Connect
- Guia de setup Slack OpenID Connect
- Guia de setup Atlassian OAuth 2.0 (3LO)
- Guia de setup GitLab OAuth2
- Guia de setup Bitbucket OAuth2
- Guia de setup Discord OAuth2
- Guia de setup Twitch OAuth2
- Guia de setup Steam OpenID 2.0
- Guia de setup Reddit OAuth2
- Guia de setup Login with Amazon
- Guia de setup Patreon OAuth2
- Guia de setup Dropbox OAuth2
- Guia de setup MetaMask SIWE
- Guia de setup Apple Sign In