Este Worker implementa el flujo:
- Frontend obtiene
credential(Google ID token) via Google Sign-In (GSI) - Frontend manda
{ credential }a este Worker - Worker verifica el ID token (JWKS, issuer/audience/exp)
- Worker busca/crea usuario en Appwrite por
emaily valida vínculo conprefs.sub - Worker crea
Users.createToken(userId)y responde{ kind: "session", userId, secret }
POST /(o cualquier ruta del Worker):
{ "credential": "<google_id_token>", "allowCreate": true }Respuestas:
kind=session:
{ "kind": "session", "userId": "...", "secret": "...", "email": "...", "sub": "..." }kind=link_required(usuario existe pero no está vinculado a esesub):
{ "kind": "link_required", "userId": "...", "email": "...", "sub": "..." }kind=register_required(no existe yallowCreate=false):
{ "kind": "register_required", "email": "...", "sub": "..." }Errores (HTTP 400/405):
{ "error": "..." }Healthcheck:
GET /→{ "ok": true }
Variables (no-secret):
APPWRITE_ENDPOINTAPPWRITE_PROJECT_IDGOOGLE_CLIENT_IDCORS_ORIGIN(opcional)ALLOW_CREATE(opcional,1para permitir auto-registro si no llegaallowCreate=true)
Secret:
APPWRITE_API_KEY
- Login Wrangler:
npx wrangler login- Configura variables y secrets en Cloudflare Dashboard:
- Workers & Pages → tu Worker → Settings → Variables
- agrega las Variables (no-secret) de arriba
- agrega
APPWRITE_API_KEYcomo Secret
(Alternativa CLI para el secret):
npx wrangler secret put APPWRITE_API_KEY- Deploy:
npm i
npx wrangler deploy- URL pública:
- Si usas
workers.dev, Wrangler te imprime la URL al desplegar. - Si usas dominio propio/route: Workers → Triggers → Routes.
- Copia
.dev.vars.examplea.dev.vars(NO lo commitees) y ajusta valores.
npx wrangler dev