✅ ¿Qué es ngrok?
ngrok crea un túnel HTTPS desde Internet hacia tu servidor local Django (localhost:8000)
Ventajas:
- ✅ HTTPS automático y válido
- ✅ No necesitas configurar certificados SSL
- ✅ Facebook lo acepta sin problemas
- ✅ Gratis para desarrollo
- ✅ Puedes compartir tu proyecto con otros
📥 PASO 1: Descargar e Instalar ngrok
1A Descargar ngrok
- Ve a: https://ngrok.com/download
- Haz clic en el botón: Download for Windows
- Se descargará un archivo:
ngrok-v3-stable-windows-amd64.zip - IMPORTANTE: No necesitas crear cuenta (puedes, pero no es obligatorio)
1B Extraer ngrok
- Ve a tu carpeta de Descargas
- Haz clic derecho en:
ngrok-v3-stable-windows-amd64.zip - Selecciona: "Extraer aquí" o "Extract Here"
- Verás un archivo:
ngrok.exe - Mueve
ngrok.exea una carpeta fácil de recordar, por ejemplo:C:\ngrok\ngrok.exe
O simplemente déjalo en Descargas si prefieres
C:\Tools o C:\ngrok para tener todas tus herramientas de desarrollo organizadas.
⚙️ PASO 2: Ejecutar Django y ngrok
2A Abrir DOS terminales/ventanas de CMD
Necesitas 2 ventanas de PowerShell o CMD abiertas al mismo tiempo:
- Terminal 1: Para Django (localhost:8000)
- Terminal 2: Para ngrok (túnel HTTPS)
2B Terminal 1: Ejecutar Django
- Abre PowerShell o CMD
- Navega a tu proyecto Django:
cd C:\Proyectos_Django\facebook_integration
- Activa el entorno virtual:
venv\Scripts\activate
- Ejecuta el servidor Django:
python manage.py runserver
- Deberías ver:
Django version 5.x.x, using settings 'facebook_integration.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
- ¡DEJA ESTA VENTANA ABIERTA! No la cierres.
2C Terminal 2: Ejecutar ngrok
- Abre una SEGUNDA ventana de PowerShell o CMD
- Navega a donde guardaste
ngrok.exe:cd C:\ngrok
O si lo dejaste en Descargas:
cd C:\Users\TU_USUARIO\Downloads
- Ejecuta ngrok:
ngrok http 8000
- Verás una pantalla como esta:
ngrok (Ctrl+C to quit) Session Status online Account Free (no account) Version 3.15.0 Region United States (us) Latency 24ms Web Interface http://127.0.0.1:4040 Forwarding https://abc123def456.ngrok-free.app -> http://localhost:8000 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
- ¡IMPORTANTE! Busca la línea que dice:
Forwarding: https://abc123def456.ngrok-free.app
- COPIA esa URL (será diferente cada vez que ejecutes ngrok):
https://abc123def456.ngrok-free.app
- ¡DEJA ESTA VENTANA ABIERTA TAMBIÉN!
🔧 PASO 3: Configurar Facebook Developers con ngrok
3A Actualizar URI de Redireccionamiento
- Ve a: developers.facebook.com
- Selecciona tu app
- Menú lateral → "Inicio de sesión con Fac..." ▼ → "Configuración"
- Busca: "URI de redireccionamiento de OAuth válidas"
- BORRA cualquier URL anterior (localhost, 127.0.0.1, etc.)
- AGREGA la URL de ngrok + /facebook/callback/:
https://abc123def456.ngrok-free.app/facebook/callback/
⚠️ REEMPLAZA
abc123def456con TU URL de ngrok - Verifica las configuraciones OAuth:
- Inicio de sesión de OAuth de cliente: SÍ ✅
- Inicio de sesión web de OAuth: SÍ ✅
- Aplicar HTTPS: SÍ ✅ (ahora SÍ puede estar activado)
- Haz clic en: "Guardar cambios"
URI de redireccionamiento de OAuth válidas:
┌──────────────────────────────────────────────────────┐
│ https://abc123def456.ngrok-free.app/facebook/callback/ │
└──────────────────────────────────────────────────────┘
☑ Inicio de sesión de OAuth de cliente: SÍ
☑ Inicio de sesión web de OAuth: SÍ
☑ Aplicar HTTPS: SÍ
3B Actualizar Dominios de la App
- Menú lateral → "Configuración de la app" ▼ → "Básica"
- Busca: "Dominios de la app"
- BORRA
localhostsi está ahí - AGREGA el dominio de ngrok (sin https://, sin /):
abc123def456.ngrok-free.app
⚠️ IMPORTANTE: Solo el dominio, NO la URL completa
- Haz clic en: "Guardar cambios"
Dominios de la app:
┌────────────────────────────────────┐
│ abc123def456.ngrok-free.app │
└────────────────────────────────────┘
⚙️ PASO 4: Actualizar Django settings.py
4 Cambiar FACEBOOK_REDIRECT_URI
- Abre:
C:\Proyectos_Django\facebook_integration\facebook_integration\settings.py - Busca la línea de
FACEBOOK_REDIRECT_URI - CAMBIA de localhost a ngrok:
# ===== ANTES (localhost - NO funciona con HTTPS forzado) ===== FACEBOOK_REDIRECT_URI = 'http://localhost:8000/facebook/callback/' # ===== DESPUÉS (ngrok - funciona con HTTPS) ===== FACEBOOK_REDIRECT_URI = 'https://abc123def456.ngrok-free.app/facebook/callback/'
⚠️ REEMPLAZA
abc123def456con TU URL de ngrok - Guarda el archivo (Ctrl+S)
- NO reinicies el servidor Django (Django detecta cambios automáticamente)
- Facebook Developers (URI de redireccionamiento + Dominio)
- Django settings.py (FACEBOOK_REDIRECT_URI)
Solución: Crear cuenta en ngrok.com (gratis) te da una URL fija.
🧪 PASO 5: Probar la Aplicación
5 Prueba Completa
- Verifica que ambas terminales estén corriendo:
- Terminal 1: Django en localhost:8000 ✅
- Terminal 2: ngrok mostrando la URL ✅
- Abre navegador en modo incógnito (Ctrl+Shift+N)
- Ve a la URL de ngrok + /facebook/login/:
https://abc123def456.ngrok-free.app/facebook/login/
- La primera vez que uses ngrok, verás una página de advertencia de ngrok:
📸 "You are about to visit: abc123def456.ngrok-free.app"
[Botón: Visit Site]Haz clic en "Visit Site"
- Deberías ser redirigido a Facebook
- Facebook mostrará:
- "¿Quieres que [Tu App] tenga acceso a tu perfil público?"
- Botón "Continuar" o "De acuerdo"
- ✅ El botón DEBE estar ACTIVO (azul, clickeable)
- Haz clic en "Continuar"
- Deberías ser redirigido a:
https://abc123def456.ngrok-free.app/dashboard/
- Si ves tu dashboard con tu nombre y foto → ¡FUNCIONA! 🎉
✅ Verificación Final
Checklist - TODO debe estar ✅:
Facebook Developers:
- ☐ URI de redireccionamiento:
https://TU_URL_NGROK/facebook/callback/ - ☐ Dominios de la app:
TU_DOMINIO_NGROK(sin https) - ☐ Client OAuth Login: SÍ
- ☐ Web OAuth Login: SÍ
- ☐ Aplicar HTTPS: SÍ (ahora puede estar activado)
Django:
- ☐ settings.py tiene:
FACEBOOK_REDIRECT_URI = 'https://TU_URL_NGROK/facebook/callback/' - ☐ FACEBOOK_APP_ID correcto
- ☐ FACEBOOK_APP_SECRET correcto
Terminales:
- ☐ Terminal 1: Django corriendo en localhost:8000
- ☐ Terminal 2: ngrok corriendo y mostrando URL HTTPS
💡 TIPS Importantes
🔄 Si reinicias ngrok:
- La URL de ngrok cambiará (versión gratuita)
- Debes actualizar:
- Facebook Developers (URI + Dominio)
- Django settings.py (FACEBOOK_REDIRECT_URI)
🔐 Para URL fija (Recomendado):
- Crea cuenta GRATIS en: ngrok.com/signup
- Copia tu authtoken del dashboard
- Ejecuta:
ngrok config add-authtoken TU_TOKEN_AQUI
- Ahora puedes reservar un dominio fijo (gratis) en tu cuenta
- Ejecuta:
ngrok http --domain=tu-dominio-fijo.ngrok-free.app 8000
📊 Dashboard de ngrok:
Mientras ngrok está corriendo, puedes ver todas las peticiones HTTP en:
http://localhost:4040
Útil para debuggear y ver qué datos envía/recibe Facebook.
🆘 Solución de Problemas
Error: "Tunnel not found"
Causa: ngrok no está corriendo o se cerró
Solución:
- Abre Terminal 2 de nuevo
- Ejecuta:
ngrok http 8000 - Actualiza la URL en Facebook y settings.py con la nueva
Error: "Failed to complete tunnel connection"
Causa: Django no está corriendo
Solución:
- Verifica Terminal 1 (Django debe estar corriendo)
- Si no está, ejecuta:
python manage.py runserver
Error: "Invalid redirect_uri"
Causa: La URL en settings.py no coincide con Facebook
Solución:
- Copia EXACTAMENTE la URL de ngrok
- Verifica que sea HTTPS
- Verifica que termine en
/facebook/callback/ - Actualiza en Facebook Y en settings.py
🎉 ¡LISTO!
Ahora tienes HTTPS funcionando con ngrok
- Terminal 1:
python manage.py runserver✅ - Terminal 2:
ngrok http 8000✅ - Facebook configurado con URL de ngrok ✅
- Django settings.py actualizado ✅
- Probar en:
https://TU_URL_NGROK/facebook/login/✅
¡Tu integración con Facebook API está completa!