# Configurar autenticación social

Guía para activar el inicio de sesión con Google, Apple y Facebook en tu proyecto.

---

## Google Sign-In

La CLI se encarga de la configuración técnica automáticamente al generar el proyecto:
- Lee el `REVERSED_CLIENT_ID` del `GoogleService-Info.plist`
- Registra el URL scheme en `ios/Runner/Info.plist`
- Escribe `lib/google_auth_options.dart` con el Web Client ID

**Lo que debes verificar una sola vez:**

1. [Firebase Console → Authentication → Sign-in method → Google](https://console.firebase.google.com/project/_/authentication/providers) → activar
2. La CLI agrega el SHA-1 del debug keystore automáticamente en Android. Si usas un equipo nuevo o un keystore diferente, verifica con:
```bash
kasy doctor
```

---

## Apple Sign-In

Requiere cuenta de [Apple Developer](https://developer.apple.com) (de pago).

### Paso 1 — Activar capability en el Bundle ID

1. Abre [Identifiers](https://developer.apple.com/account/resources/identifiers/list)
2. Selecciona tu Bundle ID
3. Activa **Sign In with Apple** → Enable as a primary App ID → **Save**

### Paso 2 — Crear una clave

1. Abre [Keys](https://developer.apple.com/account/resources/authkeys/list)
2. Haz clic en **+** → escribe un nombre (ej: `Firebase Sign In with Apple`)
3. Activa **Sign In with Apple** → Configure → selecciona tu Bundle ID → Save
4. Regístrala → **descarga el archivo `.p8`** (solo se puede descargar una vez — guárdalo en un lugar seguro)
5. Anota el **Key ID** (ej: `6RR89XG535`)

### Paso 3 — Crear un Services ID

1. Abre [Services IDs](https://developer.apple.com/account/resources/identifiers/list/serviceId)
2. Haz clic en **+** → selecciona **Services IDs** → Continue
3. Rellena:
   - **Description**: `Firebase Sign In with Apple`
   - **Identifier**: `TU_BUNDLE_ID.signin` (ej: `com.empresa.app.signin`)
4. Regístralo → haz clic en el Services ID recién creado → activa **Sign In with Apple** → Configure
5. Rellena:
   - **Primary App ID**: tu Bundle ID
   - **Domains**: `TU_PROYECTO.firebaseapp.com`
   - **Return URLs**: `https://TU_PROYECTO.firebaseapp.com/__/auth/handler`
6. Next → Done → Continue → **Save**

### Paso 4 — Configurar en Firebase

1. Abre [Firebase Console → Authentication → Apple](https://console.firebase.google.com/project/_/authentication/providers)
2. Activa el proveedor Apple
3. Rellena en **Configuración del flujo de código OAuth**:
   - **Services ID**: el identifier del Paso 3 (ej: `com.empresa.app.signin`)
   - **Team ID**: encuéntralo en [Membership Details](https://developer.apple.com/account#MembershipDetailsCard)
   - **Key ID**: el Key ID del Paso 2
   - **Clave privada**: contenido completo del archivo `.p8`, incluyendo las líneas `-----BEGIN PRIVATE KEY-----` y `-----END PRIVATE KEY-----`
4. **Guardar**

### Paso 5 — Activar capability en Xcode

1. Abre `ios/Runner.xcworkspace` en Xcode
2. Target **Runner** → **Signing & Capabilities** → **+ Capability** → agrega **Sign In with Apple**

> **Android y Web**: no se necesita configuración adicional. El SDK de Firebase gestiona el flujo en Android. Para Web, el Services ID (Paso 3) ya cubre el flujo de redirect vía `firebaseapp.com`.

---

## Facebook Sign-In

Requiere cuenta en [Meta for Developers](https://developers.facebook.com).

### Paso 1 — Crear una app en Meta

1. Abre [Meta for Developers → My Apps](https://developers.facebook.com/apps)
2. Haz clic en **Create App** → selecciona **Consumer** → Next
3. Ingresa el nombre de la app → Create App
4. En el panel de la app, anota el **App ID** y el **Client Token** (Settings → Advanced → Client Token)

### Paso 2 — Activar Facebook Login

1. En el panel de la app Meta → Add Product → **Facebook Login** → Set Up → iOS/Android según corresponda
2. iOS: proporciona el Bundle ID de tu app

### Paso 3 — iOS: actualizar Info.plist

Edita `ios/Runner/Info.plist` y reemplaza los placeholders:

```xml
<key>FacebookAppID</key>
<string>TU_APP_ID</string>
<key>FacebookClientToken</key>
<string>TU_CLIENT_TOKEN</string>
<key>FacebookDisplayName</key>
<string>Nombre de tu app</string>
```

Y el URL scheme (dentro de `CFBundleURLTypes`):
```xml
<string>fbTU_APP_ID</string>
```

### Paso 4 — Android: actualizar strings.xml

Edita `android/app/src/main/res/values/strings.xml` y reemplaza los placeholders:

```xml
<string name="facebook_app_id">TU_APP_ID</string>
<string name="facebook_client_token">TU_CLIENT_TOKEN</string>
```

### Paso 5 — Web: agregar dominio en Meta

1. En el panel de la app Meta → Facebook Login → Settings
2. En **Valid OAuth Redirect URIs**, agrega `https://TU_PROYECTO.firebaseapp.com/__/auth/handler`
3. En **Allowed Domains for the JavaScript SDK**, agrega `TU_PROYECTO.firebaseapp.com`

Verifica con:
```bash
kasy doctor
```

---

## Supabase

Para proyectos con backend Supabase, la configuración del lado de Apple y Meta es idéntica. Lo que cambia es dónde registrar las credenciales:

| Proveedor | Dónde configurar |
|-----------|-----------------|
| Google | Supabase Dashboard → Auth → Providers → Google |
| Apple | Supabase Dashboard → Auth → Providers → Apple (Services ID obligatorio) |
| Facebook | Supabase Dashboard → Auth → Providers → Facebook |

Para Apple con Supabase, el **Return URL** del Services ID debe ser:
```
https://TU_PROYECTO.supabase.co/auth/v1/callback
```
