Communitygithub.com

YepAPI/skills

Flujos OAuth de Google/GitHub/Discord, PKCE, renovación de tokens y gestión de sesiones.

¿Qué es skills?

Este skill proporciona una implementación robusta y segura de flujos OAuth para Google, GitHub y Discord, siguiendo las mejores prácticas de seguridad como el flujo de Código de Autorización con PKCE para clientes públicos y el intercambio de código del lado del servidor para aplicaciones web. Incluye la generación y verificación del parámetro `state` para prevenir ataques CSRF, la renovación automática de tokens mediante `refresh_token` almacenado de forma segura en el servidor, y la gestión de sesiones que evita almacenar tokens OAuth en cookies. Además, permite vincular múltiples proveedores de OAuth a una misma cuenta de usuario, manejando correctamente casos como la duplicación de correos electrónicos. Soporta los alcances estándar de cada proveedor (Google: `openid email profile`, GitHub: `read:user user:email`, Discord: `identify email`) e incluye un patrón de código de ejemplo para el manejador de callback. Es ideal para desarrolladores que necesitan integrar autenticación OAuth en aplicaciones Next.js o cualquier framework que soporte flujos similares.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Proveedores OAuth

Reglas

  • Usar flujo de Código de Autorización con PKCE para clientes públicos (SPA, móviles) — nunca flujo Implícito
  • Intercambio de código del lado del servidor para aplicaciones web — el secreto del cliente nunca sale del servidor
  • Parámetro state: generar state aleatorio, almacenar en sesión/cookie, verificar en el callback — previene CSRF
  • Google OAuth: alcances openid email profile, usar id_token para información del usuario
  • GitHub OAuth: alcance read:user user:email, intercambiar código en https://github.com/login/oauth/access_token
  • Discord OAuth: alcance identify email, endpoint de token en https://discord.com/api/oauth2/token
  • Renovación de token: almacenar refresh_token en el servidor, renovar antes de que expire access_token
  • Gestión de sesiones: crear sesión de aplicación al recibir el callback OAuth exitoso, no almacenar tokens OAuth en cookies
  • Vincular cuentas: permitir a los usuarios conectar múltiples proveedores a una cuenta mediante la tabla accounts

Patrones

// Manejador 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");

  // Verificar que state coincida con el valor almacenado
  if (state !== cookies().get("oauth_state")?.value) {
    return new Response("Estado inválido", { status: 400 });
  }

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

  // Crear o vincular cuenta, crear sesión
  const user = await upsertUser(userInfo);
  await createSession(user.id);

  return redirect("/dashboard");
}

Evitar

  • Almacenar secretos de cliente en código frontend — siempre intercambiar tokens del lado del servidor
  • Omitir el parámetro state — los ataques CSRF son reales
  • Almacenar tokens OAuth sin procesar en cookies — usar sesiones del lado del servidor
  • Olvidar manejar el caso de "el usuario ya existe con ese correo" al vincular proveedores

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.

Skills relacionados