Communitygithub.com

Provedores OAuth

Fluxos OAuth para Google/GitHub/Discord, PKCE, renovação de tokens e gerenciamento de sessão.

O que é Provedores OAuth?

Esta skill fornece um conjunto robusto de padrões e regras para implementar fluxos de autenticação OAuth 2.0 com provedores Google, GitHub e Discord em aplicações web modernas. Ela cobre desde o fluxo de código de autorização com PKCE (Prova de Chave para Troca de Código) para clientes públicos como SPAs e aplicativos móveis, até a troca segura de código no lado do servidor para aplicações web tradicionais. Inclui práticas essenciais de segurança, como o uso do parâmetro `state` para mitigar ataques CSRF, armazenamento seguro de tokens de atualização no servidor e gerenciamento de sessão baseado em banco de dados (em vez de cookies). Além disso, orienta sobre como vincular múltiplos provedores a uma única conta de usuário e como evitar armadilhas comuns, como expor segredos de cliente no frontend ou negligenciar o tratamento de e-mails duplicados. Ideal para desenvolvedores que usam assistentes de IA como Claude Code ou Cursor e precisam de diretrizes claras e testadas para autenticação federada.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/oauth-providers

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Provedores OAuth faz?

Regras

  • Use o fluxo de código de autorização com PKCE para clientes públicos (SPAs, dispositivos móveis) — nunca o fluxo Implícito
  • Troca de código no lado do servidor para aplicações web — o segredo do cliente nunca sai do servidor
  • Parâmetro state: gere um state aleatório, armazene-o na sessão/cookie, verifique no callback — previne CSRF
  • Google OAuth: escopos openid email profile, use id_token para obter informações do usuário
  • GitHub OAuth: escopo read:user user:email, troque o código em https://github.com/login/oauth/access_token
  • Discord OAuth: escopo identify email, endpoint de token em https://discord.com/api/oauth2/token
  • Renovação de tokens: armazene refresh_token no servidor, renove antes que o access_token expire
  • Gerenciamento de sessão: crie uma sessão de aplicação no callback OAuth bem-sucedido, não armazene tokens OAuth em cookies
  • Vincular contas: permita que os usuários conectem vários provedores a uma única conta por meio da tabela accounts

Padrões

// Manipulador de callback OAuth
export async function GET(req: Request) {
  const { searchParams } = new URL(req.url);
  const code = searchParams.get("code");
  const state = searchParams.get("state");

  // Verifique se o state corresponde ao valor armazenado
  if (state !== cookies().get("oauth_state")?.value) {
    return new Response("State inválido", { status: 400 });
  }

  // Troque o código por tokens
  const tokens = await exchangeCodeForTokens(code);
  const userInfo = await fetchUserInfo(tokens.access_token);

  // Crie ou vincule a conta, crie a sessão
  const user = await upsertUser(userInfo);
  await createSession(user.id);

  return redirect("/dashboard");
}

Evite

  • Armazenar segredos do cliente no código frontend — sempre troque tokens no lado do servidor
  • Pular o parâmetro state — ataques CSRF são reais
  • Armazenar tokens OAuth brutos em cookies — use sessões no servidor
  • Esquecer de tratar o caso de "usuário já existe com esse e-mail" ao vincular provedores

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Habilidades Relacionadas