Preguntas sobre el proveedor DiscourseConnect

¿Es esta la única función de esta configuración?

Creo que su nombre y descripción en WP son bastante vagos, así que me preguntaba qué más podría hacer.

Con respecto a esto,

¿qué pasa si un usuario ya existe en WordPress y Discourse? ¿Cómo fusiono / conecto sus perfiles?

Técnicamente, lo que hace es realizar una llamada a la ruta sync_sso de Discourse y pasar sus datos (WordPress user_id, username, name, email…) a Discourse inmediatamente después de que inicien sesión en WordPress. Los detalles sobre la ruta sync_sso están aquí: Sync DiscourseConnect user data with the sync_sso route.

El único efecto secundario que conozco para los usuarios de WordPress que nunca han visitado el sitio de Discourse es que comenzarán a recibir correos electrónicos de resumen de Discourse.

Por eso quieres animar a tus usuarios de Discourse a registrarse en WordPress con la misma dirección de correo electrónico que están utilizando en Discourse. Siempre que las direcciones de correo electrónico coincidan, iniciarán sesión en la cuenta correcta de Discourse. Esto asumiendo que te ocupas del problema con la verificación de correo electrónico que discutimos en publicaciones anteriores.

Es probable que termines con algunos usuarios que se registren en WordPress con direcciones de correo electrónico diferentes a las que han utilizado en Discourse. En ese caso, se creará una nueva cuenta de Discourse para ellos, utilizando la dirección de correo electrónico de WordPress. Deberás fusionar manualmente la cuenta antigua de Discourse en la nueva cuenta de Discourse: Merging user accounts.

3 Me gusta

¿Qué sucede si tenemos que actualizar manualmente el correo electrónico de un usuario en WordPress? ¿Se actualizará también el correo electrónico de Discourse si esta configuración está habilitada?

1 me gusta

La actualización de un usuario desde su página de perfil de WordPress no activa la llamada a sync_sso. Probablemente debería hacerlo. Por ahora, necesitarás pedirles que cierren sesión en WordPress y luego vuelvan a iniciar sesión en WordPress. No creo que sea posible que un administrador cierre la sesión de un usuario de WordPress desde su página de perfil.

Si deseas mantener los correos electrónicos y/o nombres de usuario sincronizados entre WordPress y Discourse, habilita estas configuraciones de Discourse:

  • auth overrides email
  • auth overrides username
1 me gusta

Gracias Simon. Creo que este es el proceso que seguiré después de considerarlo todo:

  • Exportar usuarios de Discourse
  • Activar Discourse Connect
  • Importar y crear esos usuarios en Wordpress y marcar sus correos electrónicos como verificados en WP
  • Cuando estos usuarios inicien sesión (a través de una página de inicio de sesión personalizada), tendrán que restablecer su contraseña
    • De alguna manera forzar solo a este segmento de usuarios a cambiar su contraseña después de que ingresen su correo electrónico (y el sistema se dé cuenta de que son parte de este segmento)
    • O simplemente mostrar un mensaje en la página de inicio de sesión: “si está iniciando sesión después del [fecha], debe RESTABLECER su contraseña”
  • ¡El acceso debería funcionar!

En cuanto a los nuevos registros que lleguen, tendré que encontrar una manera de verificar los correos electrónicos. Probablemente les enviaré sus contraseñas por correo electrónico.

También noté que incluso si la configuración “Dirección de correo electrónico verificada” no está seleccionada en el perfil de Wordpress, el usuario aún puede iniciar sesión en Discourse mediante SSO. Sin embargo, tienen que confirmar su correo electrónico independientemente la primera vez que ingresan a Discourse. Lo cual es bueno.

¿Tienen estos ajustes algún efecto secundario?

1 me gusta

Sí, esa es la forma en que está previsto que funcione. Esa no es una barrera importante para la mayoría de los usuarios. El problema que debes tener en cuenta es que si la dirección de correo electrónico no está marcada como verificada en Wordpress, Discourse no emparejará a los usuarios de Wordpress con los usuarios de Discourse basándose en su dirección de correo electrónico la primera vez que inicien sesión en Discourse a través de DiscourseConnect. Siempre que averigües cómo marcar las direcciones de correo electrónico de tus usuarios importados como verificadas, eso no causará un problema. Si no las marcas como verificadas, será un inconveniente resolver las cosas.

Si están habilitadas, impiden que los usuarios cambien su nombre de usuario o dirección de correo electrónico en Discourse.

1 me gusta

Sí, estuve probando mucho y me di cuenta de esto. Simplemente escribiré un script personalizado que marcará a todos los usuarios que importo como verificados.

¡Gracias por aclarar!

1 me gusta

¿Está bien mantener el modo detallado /logs activado para siempre?

¿Esto afectará negativamente el rendimiento?

He visto casos en los que se han dejado activados para siempre. No creo que tenga ningún impacto significativo en el rendimiento. Simplemente abarrotan tus registros si intentas depurar un problema que no está relacionado con DiscourseConnect.

2 Me gusta

¡Todo ha estado funcionando muy bien hasta ahora!

Una pequeña cosa que noto es que cualquier ruta que introduzca en este campo:

se convierte en la página de inicio de sesión predeterminada de WordPress.
Por ejemplo, si ahora intento ir a /wp-admin, que es lo que solía usar para iniciar sesión como administrador, me redirige a /login/forum.

Idealmente, solo debería redirigir a esto cuando alguien haga clic en el botón de inicio de sesión desde el foro de Discourse.

Me pregunto si este es el comportamiento normal y si es algo malo que funcione de esta manera.

Ese es el comportamiento esperado. La opción “Ruta a tu página de inicio de sesión” se utiliza para anular la ruta de inicio de sesión predeterminada de WordPress. Lo hace enganchándose al filtro login_url de WordPress.

No elimina la ruta de inicio de sesión predeterminada en /wp-login.php, por lo que aún puedes ir directamente a esa URL introduciéndola en la barra de direcciones de tu navegador. En lugar de ir a /wp-admin, ve a /wp-login.php para usar la página de inicio de sesión predeterminada.

Se me ocurre una forma en que el plugin podría actualizarse para redirigir solo a la ruta “Ruta a tu página de inicio de sesión” para iniciar sesión en Discourse, pero ese cambio requeriría un poco de trabajo.

4 Me gusta

No te preocupes. Solo una cosita. ¡Gracias por tus ideas!

1 me gusta

Hola @simon, estoy viendo los siguientes errores en mi registro y me pregunto qué significan y cómo abordarlos. Noté estos errores después de que un usuario dijera que estaba recibiendo un error al intentar iniciar sesión.

  • (google_oauth2) Fallo de autenticación! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado

  • Fallo de autenticación! request_error: OAuth::Unauthorized, 401 Unauthorized

  • (facebook) Fallo de autenticación! no_authorization_code: OmniAuth::Strategies::Facebook::NoAuthorizationCodeError, debe pasar un code (a través de la URL o mediante una cookie firmada fbsr_XXX)

Vale la pena señalar que estos errores no son comunes. La mayoría de los registros parecen estar funcionando correctamente:

Acabo de recibir esta captura de pantalla del usuario:

Dijo: “No hay correo electrónico. Tan pronto como haces clic en el enlace de registro, se te presenta la siguiente página…”

Cuando hago clic en el enlace de inicio de sesión/registro (en incógnito), me funciona.
Aquí está la URL de nuestro foro como referencia: forum.projectvanlife.com

Supongo que las entradas que comienzan con “Verbose SSO log” muestran inicios de sesión exitosos.

Para los errores “google_oauth2”, “OAuth::Unauthorized” y “facebook”, no estoy seguro de lo que está sucediendo. ¿Estaba tu sitio de Discourse configurado previamente para permitir que los usuarios iniciaran sesión a través de Google y Facebook? Si es así, no podrán iniciar sesión en el sitio con esos métodos ahora que DiscourseConnect está habilitado. Quizás intentes deshabilitar los inicios de sesión de Google y Facebook desde tu página de configuración de Discourse.

Para los usuarios que informan errores al iniciar sesión, intenta encontrar un mensaje de error detallado del registro SSO que esté asociado con el intento de inicio de sesión del usuario. Luego, comprueba si el error coincide con alguno de los problemas que se describen en este tema: Debug and fixing common DiscourseConnect issues.

La URL que se muestra en la barra de direcciones del navegador es https://projectvanlife.com/login/forum/javascript%3Avoid(0.

Supongo que parte de javascript se está truncando y en realidad está destinado a decodificarse como javascript:void(0). No estoy seguro de dónde podría provenir eso. Posiblemente de una de las extensiones del navegador del usuario. Intenta pedirles que deshabiliten sus extensiones del navegador, o que intenten iniciar sesión desde una ventana de incógnito.

Editar: @Sami_Syed el código javascript:void(0) se está agregando a la ruta cuando se hace clic en el enlace “Registrarse” de la página de inicio de sesión. El href de ese enlace es: \"javascript%3Avoid(0)\"

Supongo que lo que se usa es para tener el formulario de registro en la misma ruta que el formulario de inicio de sesión. Sin embargo, algo está saliendo mal con él. ¿Sabes si esto estaba funcionando correctamente antes de que se habilitara DiscourseConnect?

Si el plugin que se utiliza para los formularios de inicio de sesión/registro tiene una opción para que el formulario de registro aparezca en una página separada, habilitar eso debería funcionar como una solución rápida para el problema.

Estaré desconectado la mayor parte del día de hoy, pero puedo intentar ayudarte con esto más tarde si estás atascado.

Editar: Estaba desconcertado por esto, así que volví a mirar. La pestaña “Registrarse” en el formulario de inicio de sesión funciona sin problemas. El enlace “Registrarse” tiene el problema que describí anteriormente:

Por lo tanto, la solución rápida para el problema es simplemente eliminar el enlace de registro.

2 Me gusta

Esto es correcto.

Sí, esto estaba habilitado. La pregunta es, sin embargo, ¿cómo pueden incluso activar un inicio de sesión a través de FB o Google ahora? Nuestra página de inicio de sesión actual no tiene esa función.

¿O este error aparece para aquellos que se registraron originalmente usando G o FB y ahora están intentando iniciar sesión pero no funciona?

Y si ese es el caso, ¿cómo puedo resolverlo?

Como veo, es porque no puse un enlace correcto allí. Oops. ¡buena observación y gracias!

No sé qué podría estar activándolo. Quizás la URL del proveedor de autenticación fue almacenada en caché por los navegadores del usuario. Eso es solo una suposición.

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.