From f5f4e878b434e9b08dbcc93da851e0ffc827ede9 Mon Sep 17 00:00:00 2001 From: Felipe Canin Novaes Date: Sat, 14 Mar 2026 22:01:04 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20adicionar=20documenta=C3=A7=C3=A3o=20pa?= =?UTF-8?q?ra=20configura=C3=A7=C3=A3o=20do=20Google=20OAuth=20no=20backen?= =?UTF-8?q?d=20e=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OAuth.md | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 OAuth.md diff --git a/OAuth.md b/OAuth.md new file mode 100644 index 0000000..3b3e12c --- /dev/null +++ b/OAuth.md @@ -0,0 +1,83 @@ +# Plano: Configurar Google OAuth + +## Context + +O projeto já tem a estrutura OAuth implementada nos dois lados, mas ambos precisam de configuração/implementação para funcionar de ponta a ponta. + +--- + +## Status atual + +### Backend (Rust/Axum) — ✅ Lógica pronta, falta só configuração + +- Endpoint `POST /api/v1/auth/oauth/google` já existe +- Verifica o `id_token` com `https://oauth2.googleapis.com/tokeninfo` +- Cria usuário se novo, ou vincula a conta existente por email +- **Só falta**: preencher as variáveis de ambiente em `backend/.env` + +### Mobile (React Native/Expo) — ⚠️ UI pronta, falta integração do SDK + +- Botão "Sign in with Google" existe em `mobile/app/(auth)/login.tsx:55` +- `GoogleLoginUseCase` já está definido em `mobile/src/infrastructure/container.ts` +- **Falta**: integrar o SDK nativo do Google Sign-In e chamar o use case + +--- + +## O que você vai precisar + +### 1. Google Cloud Console + +- Criar um projeto (ou usar existente) +- Ativar a API: **Google Sign-In** (ou "Google Identity") +- Criar credenciais OAuth 2.0: + - **Android**: SHA-1 do keystore + package name (`com.meowspool.*`) + - **iOS**: Bundle ID + - **Web/Backend**: Client ID + Client Secret (para o backend verificar o token) + +### 2. Backend — apenas `.env` + +Arquivo: `backend/.env` + +``` +GOOGLE_CLIENT_ID=xxxx.apps.googleusercontent.com +GOOGLE_CLIENT_SECRET=xxxx # necessário se usar Authorization Code Flow +``` + +### 3. Mobile — integrar SDK + +Instalar `@react-native-google-signin/google-signin` ou usar `expo-auth-session` (mais simples para Expo). + +Implementar `onGoogleLogin()` em `mobile/app/(auth)/login.tsx`: + +```typescript +// 1. Chamar SDK do Google → obtém id_token +// 2. Chamar GoogleLoginUseCase.execute(id_token) +// 3. Use case já envia para POST /api/v1/auth/oauth/google +``` + +--- + +## Arquivos críticos a modificar + +| Arquivo | O que fazer | +| ----------------------------- | --------------------------------------------------------- | +| `backend/.env` | Adicionar GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET | +| `mobile/app/(auth)/login.tsx` | Implementar `onGoogleLogin()` (linha ~55) | +| `mobile/package.json` | Adicionar dependência do SDK Google Sign-In | +| `mobile/app.json` | Adicionar configuração do Google Sign-In para Android/iOS | + +--- + +## Resumo da resposta à pergunta + +**Precisa configurar os dois**, mas por motivos diferentes: + +- **Backend**: só variáveis de ambiente (15 minutos) +- **Mobile**: integração do SDK nativo (algumas horas) + +--- + +## Verificação + +1. Backend: testar `POST /api/v1/auth/oauth/google` com um token real via curl/Postman +2. Mobile: testar fluxo completo no simulador/dispositivo