> Este documento explica cómo configurar cada proveedor de inicio de sesión social (Google, Facebook, LinkedIn, Naver, Kakao y LINE) en el plugin Simple Easy Social Login (SESLP).

> Todos los inicios de sesión se basan en OAuth 2.0 / OpenID Connect (OIDC).
> Debes crear una aplicación (cliente) en la consola de cada proveedor e introducir el Client ID / Client Secret en SESLP.

## 🔧 Guía de configuración común

#### 1) Regla de Redirect URI:

`https://{your-domain}/?social_login={provider}`

Ejemplos:

- Google → `https://example.com/?social_login=google`
- Facebook → `https://example.com/?social_login=facebook`
- LinkedIn → `https://example.com/?social_login=linkedin`
- Naver → `https://example.com/?social_login=naver`
- Kakao → `https://example.com/?social_login=kakao`
- LINE → `https://example.com/?social_login=line`

#### 2) HTTPS es obligatorio.

La mayoría de los proveedores requieren HTTPS y rechazarán redirecciones `http://`.

#### 3) Coincidencia exacta

La Redirect URI registrada en la consola debe coincidir al 100 % con la que SESLP envía (protocolo, subdominio, ruta, barra final y cadena de consulta).

#### 4) Es posible que el correo electrónico no esté disponible

Algunos proveedores permiten que los usuarios rechacen compartir su correo electrónico. SESLP puede recurrir a identificadores estables del proveedor para vincular cuentas.

#### 5) Dónde revisar los registros

- `/wp-content/SESLP-debug.log`
- `/wp-content/debug.log` (`WP_DEBUG_LOG = true`)

## 🐞 Registro de depuración y solución de problemas

Cómo leer los registros de depuración de SESLP

#### Ubicación del archivo de registro

- `/wp-content/SESLP-debug.log` (registro de depuración de SESLP)
- `/wp-content/debug.log` (`WP_DEBUG_LOG = true`)

#### Formato del registro

    [YYYY-MM-DD HH:MM:SS Z] [LEVEL] Message {"key":"value",...}

- `Z`: UTC o la hora local de WordPress (por ejemplo, KST) — seleccionable en la configuración de SESLP
- Privacidad: los correos electrónicos, tokens y secretos se ocultan automáticamente (ejemplo: `r********@g****.com`)

#### Registros del flujo OAuth (comunes)

1) Inicio de OAuth

    [DEBUG] State created {"provider":"google","state":"906****23","ttl":"10min"}

Significado: se creó un token state para la protección CSRF. `ttl` es válido durante 10 minutos.

2) Callback activado

    [DEBUG] Auth route triggered {"provider":"google","has_code":1}

Significado: se entró en el callback. `has_code:1` → se recibió el valor `code` de OAuth.

3) Validación de state

Correcto:

    [DEBUG] State validated {"provider":"google","state":"906****23"}

Error:

    [WARNING] State validation failed: not found/expired {"provider":"google","state":"906****23"}

4) Intercambio de token

    [DEBUG] Token response (google) {"has_access_token":1}

Significado: el token se obtuvo correctamente.

Error:

    [ERROR] Token request failed (google) {"error":"..."}

5) Solicitud de información del usuario

    [ERROR] Userinfo request failed (google)
    [WARNING] Invalid userinfo (google)

6) Vinculador de usuario

    [DEBUG] Linker: signing in user {"user_id":45,"provider":"google","created":0}
    [INFO]  Login success (google) {"user_id":45,"email":"r********@g****.com"}

7) Redirección

    [DEBUG] Redirect decision {"mode":"profile","user_id":45,"url":"https://example.com/wp-admin/profile.php"}

#### Tabla de referencia rápida

Mensaje de registro (resumen) | Causa probable | Acción
--- | --- | ---
State validation failed | Tiempo agotado, cambio de pestaña, solicitud duplicada | Reintenta rápidamente, usa modo privado
Token request failed | Client ID/Secret/Redirect incorrectos, solicitud bloqueada | Revisa la consola de desarrollo, el firewall y la hora del servidor
Userinfo invalid | Falta algún scope o el correo es privado | Añade los scopes `email, profile` y solicita el consentimiento del usuario
User create failed | Conflicto de cuenta o restricción de WordPress | Comprueba usuarios existentes y reglas multisitio
Redirect missing | Retorno anticipado en el código | Asegúrate de que la clase Redirect se ejecute después del callback

#### Información útil para incluir en informes de errores

- Líneas de registro relevantes (con datos ocultos)
- Proveedor utilizado (Google/Naver/etc.)
- Modo de redirección / URL personalizada
- Estado del registro de depuración
- Entorno de WordPress (sitio único, multisitio, plugins de caché)

## 🌍 Guías por proveedor

Expande cada proveedor a continuación y pega el contenido de la guía en español que hayas preparado para ese proveedor.

Google

- Scopes recomendados: `openid email profile`
- Regla de Redirect URI: `https://{domain}/?social_login=google`

#### 1) Preparación (lista de verificación obligatoria)

(1) HTTPS recomendado / prácticamente obligatorio (usa certificados de desarrollo de confianza en entornos locales).

(2) La Redirect URI debe coincidir exactamente al 100 % con el valor registrado en la consola. Ej.: `https://example.com/?social_login=google`

(3) En modo de prueba, solo los usuarios de prueba pueden iniciar sesión (hasta 100 usuarios).

(4) Si usas URLs de inicio de la app, política de privacidad o términos, puede ser necesario registrar los dominios de la app (Authorized domains) y realizar la verificación de propiedad.

#### 2) Configuración del proyecto / pantalla de consentimiento

(1) Accede a Google Cloud Console.
https://console.cloud.google.com/apis/credentials

(2) Selecciona el proyecto en la parte superior → Crear nuevo proyecto (si es necesario).

(3) En la barra lateral, ve a APIs y servicios → Pantalla de consentimiento OAuth.

(4) Selecciona el tipo de usuario: normalmente Externo.

(5) Introduce la información de la app: nombre de la app, correo de soporte al usuario y, opcionalmente, logotipo.

(6) Sección de dominio de la app

- Introduce la URL de inicio de la app, la URL de la política de privacidad y la URL de los términos del servicio.
- Añade el dominio raíz (por ejemplo, example.com) a Authorized domains → Guardar
- Si es necesario, realiza la verificación de propiedad del dominio mediante Search Console.

(7) Configura los Scopes

- Recomendados: `openid`, `email`, `profile`
- Los scopes sensibles o restringidos pueden requerir revisión antes de pasar a producción.

(8) Añade usuarios de prueba (correos electrónicos autorizados para iniciar sesión en modo de prueba).

(9) Guardar.

Nota: Usar solo los scopes básicos (`openid email profile`) suele permitir operar (publicar) sin revisión.

#### 3) Crear cliente OAuth (aplicación web)

(1) Barra lateral: APIs y servicios → Credenciales.

(2) Arriba: + Crear credenciales → ID de cliente OAuth.

(3) Tipo de aplicación: `Aplicación web`.

(4) Introduce un nombre identificable (por ejemplo, `SESLP – Front`).

(5) Añade las Authorized redirect URIs

- `https://{domain}/?social_login=google`

(6) Haz clic en Crear y copia el Client ID / Client Secret mostrado.

(Opcional) Authorized JavaScript origins normalmente no son necesarios para este plugin, ya que utiliza code grant.

#### 4) Configuración en WordPress (plugin)

(1) Administrador de WP → pestaña SESLP Settings → Google.

(2) Pega el Client ID / Client Secret → Guardar.

(3) Haz una prueba real con el botón de inicio de sesión de Google en el frontend del sitio.

#### 5) Cambiar de prueba a producción

(1) Comprueba pantalla de consentimiento OAuth → estado de publicación.

(2) Para pasar de prueba a producción:

- Verifica que la información de la app (logo, dominio de la app, políticas y términos) sea correcta.
- Elimina los scopes innecesarios y conserva solo los necesarios.
- Envía una solicitud de revisión si utilizas scopes sensibles.

(3) Tras pasar a producción, todas las cuentas de Google podrán iniciar sesión.

#### 6) Errores comunes y soluciones

(1) redirect_uri_mismatch

→ Ocurre si la Redirect URI registrada en la consola y la URI real de la solicitud difieren aunque sea mínimamente (incluyendo protocolo, subdominio, barra o query). Corrígelo para que coincidan exactamente.

(2) access_denied / disallowed_useragent

→ Restricciones del navegador o del entorno dentro de la app. Inténtalo de nuevo en un navegador normal.

(3) invalid_client / unauthorized_client

→ Error tipográfico en el Client ID/Secret o problema con el estado de la app (eliminada/desactivada). Vuelve a emitir o revisar las credenciales.

(4) El correo electrónico está vacío

→ Comprueba si el scope `email` está incluido, si la pantalla de consentimiento se muestra correctamente y la configuración de visibilidad/seguridad del correo en la cuenta. Explica claramente el uso del permiso de correo electrónico en la pantalla de consentimiento.

Revisar registros:

- `wp-content/SESLP-debug.log` (depuración del plugin activada)
- `wp-content/debug.log` (`WP_DEBUG`, `WP_DEBUG_LOG = true`)

#### 7) Lista de verificación resumida

- Pantalla de consentimiento OAuth: configurar información de la app / dominio / políticas / términos / scopes / usuarios de prueba
- Credenciales: crear cliente de aplicación web
- Registrar Redirect URI: `https://{domain}/?social_login=google`
- SESLP: guardar Client ID/Secret y probar el inicio de sesión
- Cambiar el estado de publicación al pasar a producción (enviar revisión si es necesario)

Facebook

- Redirect URI: `https://{domain}/?social_login=facebook`
- Permisos solicitados (recomendados): `public_profile`, `email`
- Facebook no utiliza `openid`.

#### 1) Crear la app y añadir el producto

(1) Ve a Meta for Developers → inicia sesión
https://developers.facebook.com/

(2) Haz clic en Create App → selecciona un tipo general (por ejemplo, Consumer) → crea la app

(3) En la barra lateral izquierda, añade Facebook Login desde Products

(4) Ve a Settings → revisa los siguientes elementos:

- Client OAuth Login: ON
- Web OAuth Login: ON
- Valid OAuth Redirect URIs:
- Añade `https://{domain}/?social_login=facebook`
- (Opcional) Enforce HTTPS: recomendado por defecto

#### 2) Configuración básica de la app (App Settings → Basic)

(1) App Domains: `example.com` (el dominio de la URL de políticas/términos/inicio de la app)

(2) Privacy Policy URL: página de política accesible públicamente

(3) Terms of Service URL: página de términos accesible públicamente

(4) User Data Deletion: proporciona una URL con instrucciones o un endpoint para eliminación de datos

(5) Category / App Icon: configúralos adecuadamente y luego Save

#### 3) Scopes (permisos) y revisión de la app

(1) Los permisos básicos necesarios para el inicio de sesión estándar son `public_profile`; el correo electrónico opcional es `email`

(2) En la mayoría de los casos, `email` puede usarse sin revisión, aunque puede haber excepciones según la región o la cuenta

(3) Los permisos avanzados como los relacionados con páginas o anuncios requieren App Review y Business Verification

#### 4) Cambiar de modo (Development → Live)

En la parte superior o en la sección de configuración de la app, cambia el App Mode: Development → Live

#### 5) Lista de verificación antes de pasar a Live

- Preparar Privacy Policy / Terms / Data Deletion URL
- Introducir correctamente las Valid OAuth Redirect URIs
- Eliminar permisos innecesarios y solicitar solo los requeridos
- (Si es necesario) Completar App Review / Business Verification

#### 6) Configuración de WordPress (SESLP)

(1) Administrador de WP → SESLP Settings → Facebook

(2) Introduce App ID / App Secret → Guardar

(3) Haz una prueba con el botón de inicio de sesión de Facebook en el frontend

#### 7) Solución de problemas

(1) Can't Load URL / error de redirect_uri

→ Asegúrate de que se haya registrado exactamente la misma URI en Valid OAuth Redirect URIs (incluyendo protocolo, subdominio, barra y cadena de consulta)

(2) email null

→ El usuario no ha registrado un correo electrónico en Facebook o lo tiene como privado. Prepara una lógica de vinculación de cuentas basada en ID y explica claramente el uso del permiso de correo electrónico en la pantalla de consentimiento

(3) Errores relacionados con permisos

→ Si el scope solicitado supera el rango básico, se requiere App Review / Business Verification

(4) No se puede cambiar a Live

→ Si la URL de políticas/términos/instrucciones de eliminación de datos falta o no es pública. Debes proporcionar una URL pública

LinkedIn

- Redirect URI: `https://{domain}/?social_login=linkedin`
- Configuración requerida: habilitar OpenID Connect (OIDC)
- Scopes recomendados: `openid`, `profile`, `email`
- LinkedIn está eliminando progresivamente los scopes heredados (`r_liteprofile`, `r_emailaddress`).
- Las nuevas aplicaciones deben usar los scopes estándar de OIDC.

#### 1) Crear una aplicación

(1) Ve a LinkedIn Developers Console

→ https://www.linkedin.com/developers/apps

(2) Inicia sesión con tu cuenta de LinkedIn

(3) Haz clic en Create app

(4) Completa los campos requeridos:

- Nombre de la app: p. ej., `MySite LinkedIn Login`
- Página de LinkedIn: seleccionar o “None”
- Logo de la app: PNG/JPG de al menos 100×100
- URL de política de privacidad / correo empresarial: válidos y públicos

(5) Haz clic en Create app

Modo de desarrollo por defecto → permite probar inmediatamente el inicio de sesión con `openid`, `profile`, `email` sin publicar

#### 2) Habilitar OpenID Connect (OIDC)

(1) Ve a la pestaña Products

(2) Busca Sign In with LinkedIn using OpenID Connect

(3) Haz clic en Add product → aprobación inmediata

(4) La configuración de OIDC aparecerá en la pestaña Auth

Scopes OIDC requeridos

- `openid` → token de ID
- `profile` → nombre, foto, titular, etc.
- `email` → dirección de correo electrónico

#### 3) Configuración OAuth 2.0 (pestaña Auth)

(1) Ve a Auth → OAuth 2.0 settings

(2) Añade en Redirect URLs:

→ `https://{domain}/?social_login=linkedin`

(3) Se requiere coincidencia exacta (protocolo, subdominio, barra, query)

(4) Registra varias si es necesario:

- Local: `https://localhost:3000/?social_login=linkedin`
- Staging: `https://staging.example.com/?social_login=linkedin`
- Producción: `https://example.com/?social_login=linkedin`

(5) Haz clic en Save

#### 4) Obtener Client ID / Client Secret

(1) En la pestaña Auth, encuentra:

- Client ID
- Client Secret

(2) Administrador de WordPress → SESLP Settings → LinkedIn

(3) Pega ambos → Guardar

(4) Prueba con el botón de inicio de sesión de LinkedIn en el frontend

Seguridad:

- Nunca expongas el Client Secret
- Usa Regenerate secret si se ve comprometido

#### 5) Explicación de los scopes

Scope | Descripción | Nota
--- | --- | ---
`openid` | Devuelve el token de ID estándar de OIDC | Requerido
`profile` | Nombre, foto, titular, etc. | Requerido
`email` | Dirección de correo electrónico | Requerido

Scopes heredados (`r_liteprofile`, `r_emailaddress`)

- Obsoletos después de 2024
- No disponibles para nuevas apps

#### 6) Solución de problemas

(1) redirect_uri_mismatch

→ Diferencias mínimas en la URI → asegurar coincidencia 100%

(2) invalid_client

→ ID/Secret incorrectos o app inactiva → verificar o regenerar

(3) email NULL

→ Usuario rechazó o falta el scope `email` → explicar uso en la pantalla de consentimiento

(4) insufficient_scope

→ Scope solicitado no aprobado → verificar que OIDC esté habilitado

(5) OIDC no habilitado

→ Falta Sign In with LinkedIn using OpenID Connect en Products

Logs:

- `/wp-content/SESLP-debug.log`
- `/wp-content/debug.log`

#### 7) Lista de verificación resumida

- App creada
- Producto OpenID Connect añadido
- Redirect URI registrado correctamente
- Client ID/Secret guardados en SESLP
- Scopes: `openid profile email` (sin scopes heredados)
- Prueba realizada en frontend HTTPS

Nota:

- SESLP es totalmente compatible con el flujo OIDC.
- OAuth 2.0 heredado ya no está soportado.
- Usa siempre OpenID Connect en nuevas integraciones.

Naver

- Redirect URI: `https://{domain}/?social_login=naver`
- Scopes recomendados: perfil básico (`name`), correo electrónico (`email`)
- Naver utiliza la API Naver Login (네아로), HTTPS es obligatorio

#### 1) Registro de la aplicación

(1) Ve a Naver Developer Center

→ https://developers.naver.com/apps/

(2) Inicia sesión con tu cuenta de Naver

(3) Haz clic en Application → Register Application

(4) Completa los campos requeridos:

- Nombre de la aplicación: p. ej., `MySite Naver Login`
- Uso de API: selecciona `Naver Login (네아로)`
- Add Environment → Web
- Service URL: `https://example.com`
- Callback URL: `https://example.com/?social_login=naver`

(5) Acepta los términos → Register

Nota:

- HTTPS obligatorio → HTTP no está permitido
- Los subdominios deben registrarse por separado

#### 2) Obtener Client ID / Client Secret

(1) Ve a My Applications

(2) Haz clic en la app → copia Client ID y Client Secret

#### 3) Configuración de WordPress (plugin)

(1) Administrador de WP → SESLP Settings → Naver

(2) Pega el Client ID / Client Secret

(3) Asegúrate de que la Redirect URI coincida exactamente: `https://{domain}/?social_login=naver`

(4) Guardar → prueba con el botón de inicio de sesión de Naver en el frontend

#### 4) Permisos y provisión de datos

Dato | Scope | Nota
--- | --- | ---
Nombre | `name` | Predeterminado
Correo electrónico | `email` | Predeterminado
Género, cumpleaños | Separado | Requiere revisión

- Los usuarios pueden aceptar o rechazar en la pantalla de consentimiento
- Si el correo es rechazado → `email = null` → usa vinculación basada en ID
- Los datos sensibles requieren revisión de la app por parte de Naver

#### 5) Solución de problemas

(1) Redirect URI mismatch

→ Incluso una pequeña diferencia provoca el error → asegúrate de una coincidencia del 100%

(2) Error HTTP

→ Debe usarse HTTPS

(3) Error de subdominio

→ Registra cada subdominio por separado

(4) email NULL

→ El usuario rechazó o el correo es privado → prepara lógica basada en ID

(5) Se necesita revisión

→ Inicio de sesión básico: sin revisión
→ Datos adicionales: requieren revisión

Logs:

- `/wp-content/SESLP-debug.log`
- `/wp-content/debug.log`

#### 6) Lista de verificación resumida

- App registrada en Naver Developer Center
- Callback URL registrada correctamente
- HTTPS en uso
- Subdominios registrados por separado (si es necesario)
- Client ID/Secret guardados en SESLP
- Comportamiento de aceptación/rechazo del correo probado
- Prueba de inicio de sesión en frontend completada

Nota:

- SESLP es totalmente compatible con Naver Login (네아로).
- El inicio de sesión básico (`name`, `email`) está disponible sin revisión.

Kakao

- Redirect URI: `https://{domain}/?social_login=kakao`
- Scopes recomendados: `profile_nickname`, `profile_image`, `account_email`
- `account_email` disponible solo tras verificación de identidad o negocio
- HTTPS obligatorio, activación de Client Secret obligatoria

#### 1) Crear aplicación

(1) Ve a Kakao Developers

→ https://developers.kakao.com/

(2) Inicia sesión → My Applications → Add New App

(3) Introduce:

- Nombre de la app, nombre de la empresa
- Categoría
- Aceptar la política de operación

(4) Guardar

#### 2) Activar Kakao Login

(1) Product Settings > Kakao Login

(2) Activar Enable Kakao Login → ON

(3) Registrar Redirect URI

- `https://{domain}/?social_login=kakao`
- Guardar

(4) El dominio debe coincidir con el dominio de la plataforma

#### 3) Elementos de consentimiento (Scopes)

(1) Consent Items

(2) Añadir y configurar:

Scope | Descripción | Tipo de consentimiento | Nota
--- | --- | --- | ---
`profile_nickname` | Apodo | Requerido/Opcional | Básico
`profile_image` | Imagen de perfil | Requerido/Opcional | Básico
`account_email` | Correo electrónico | Opcional | Requiere verificación

(3) Indica claramente el propósito de cada uno

(4) Guardar

Nota: Los scopes sensibles requieren verificación

#### 4) Registrar plataforma web

(1) App Settings > Platform

(2) Register Web Platform

(3) Dominio del sitio: `https://{domain}`

(4) Guardar → debe coincidir con el dominio del Redirect URI

#### 5) Seguridad – Generar y activar Client Secret

(1) Product Settings > Security

(2) Use Client Secret → ON

(3) Generate Secret → copiar valor

(4) Activation Status → Active

(5) Guardar

Importante: debes activarlo después de generarlo

#### 6) Obtener REST API Key (Client ID)

(1) App Keys

(2) Copiar REST API Key → usar como Client ID

#### 7) Configuración en WordPress

(1) WP Admin → SESLP Settings → Kakao

(2) Client ID = REST API Key
Client Secret = Secret generado

(3) Guardar

(4) Probar con el botón de inicio de sesión de Kakao

#### 8) Solución de problemas

(1) redirect_uri_mismatch → se requiere coincidencia del 100%

(2) invalid_client → Secret no activado o error tipográfico

(3) email vacío → usuario lo rechazó o no está verificado

(4) Domain mismatch → plataforma vs Redirect URI

(5) HTTP no permitido → solo HTTPS

Logs:

- `/wp-content/SESLP-debug.log`
- `/wp-content/debug.log`

#### 9) Lista de verificación resumida

- Kakao Login activado
- Redirect URI registrada
- Dominio de la plataforma web registrado
- Elementos de consentimiento configurados
- Client Secret generado y activado
- REST API Key / Secret guardados en SESLP
- Probado en frontend HTTPS

LINE

- Redirect URI: `https://{domain}/?social_login=line`
- Requerido: activar OpenID Connect y solicitar y obtener aprobación para permiso de email
- Scopes recomendados: `openid`, `profile`, `email`
- HTTPS obligatorio, el permiso de email requiere aprobación

#### 1) Crear proveedor y canal

(1) Accede a LINE Developers Console

→ https://developers.line.biz/console/

(2) Inicia sesión con cuenta de negocio de LINE (no se permite cuenta personal)

(3) Haz clic en Create a new provider → introduce nombre → Create

(4) Dentro del proveedor → pestaña Channels

(5) Selecciona Create a LINE Login channel

(6) Configurar:

- Channel type: `LINE Login`
- Provider: seleccionar proveedor creado
- Region: país objetivo (por ejemplo, `South Korea`, `Japan`)
- Name / description / icon: se muestran en la pantalla de consentimiento

(7) Aceptar términos → Create

#### 2) Activar OpenID Connect y solicitar permiso de email

(1) Ve a OpenID Connect en el menú izquierdo

(2) Haz clic en Apply junto a Email address permission

(3) Completa la solicitud:

- URL de política de privacidad (debe ser pública)
- Subir captura de la política de privacidad
- Enviar

(4) El scope `email` solo funciona tras la aprobación
→ la aprobación suele tardar 1–3 días hábiles

#### 3) Registrar Callback URL y publicar canal

(1) Ve a LINE Login en el menú izquierdo

(2) Introduce Callback URL:

→ `https://{domain}/?social_login=line`

(3) Se requiere coincidencia exacta:

- Protocolo: `https://` (HTTP no permitido)
- Dominio, ruta y query deben coincidir al 100%

(4) Haz clic en Save

(5) Cambia el estado del canal a Published

- Modo desarrollo: solo pruebas
- Publicado: servicio en producción

#### 4) Obtener Channel ID / Secret

(1) Parte superior del canal o Basic settings

(2) Channel ID → SESLP Client ID
Channel Secret → SESLP Client Secret

#### 5) Configuración en WordPress

(1) WP Admin → SESLP Settings → LINE

(2) Client ID ← Channel ID
Client Secret ← Channel Secret

(3) Guardar

(4) Probar con el botón de inicio de sesión de LINE en el frontend

#### 6) Solución de problemas

(1) redirect_uri_mismatch → incluso pequeñas diferencias causan error → coincidencia 100%

(2) invalid_client → error en Secret o canal no publicado

(3) email NULL → permiso de email no aprobado o usuario lo rechazó

(4) HTTP no permitido → HTTPS obligatorio (localhost HTTPS permitido)

(5) Limitación en modo desarrollo → solo cuentas de prueba pueden iniciar sesión

Logs:

- `/wp-content/SESLP-debug.log`
- `/wp-content/debug.log`

#### 7) Lista de verificación resumida

- Proveedor y canal LINE Login creados con cuenta empresarial
- Permiso de email solicitado y aprobado
- Callback URL registrada correctamente
- Uso de HTTPS y estado publicado
- Channel ID/Secret guardados en SESLP
- Prueba de inicio de sesión completada en frontend

Nota: SESLP es totalmente compatible con

- LINE Login v2.1 + OpenID Connect.
- La recopilación de email requiere aprobación previa.