Como administrador de un foro que utiliza DiscourseConnect, es posible que ocasionalmente reciba informes de usuarios que, al intentar iniciar sesión en el foro, reciben un mensaje de error. Por ejemplo: “Hay un problema con su cuenta. Póngase en contacto con el administrador del sitio”.
Habilitar el registro detallado de Discourse Connect
Para depurar el problema, lo primero que debe hacer es habilitar la configuración del sitio “verbose discourse connect logging” (registro detallado de Discourse Connect) en Discourse. Si esta configuración ya estaba habilitada, puede ir directamente a los registros de su sitio en Admin/Logs/Error Logs. Si la configuración no estaba habilitada previamente, deberá pedirle al usuario que intente iniciar sesión nuevamente para que pueda generar una entrada de registro de su intento de inicio de sesión fallido.
Leer la entrada del registro
Vaya a Admin/Logs/Error Logs y busque una entrada de registro reciente que comience con Verbose SSO log: Record was invalid. Si tiene dificultades para encontrar la entrada, ingrese “Record was invalid” en el cuadro de búsqueda en la parte inferior de la página de registros. Haga clic en la entrada del registro. Luego, haga clic en la pestaña “info” en la barra de herramientas de registros:
La información que necesitará es la razón (indicada en la entrada del registro) y el email y el external_id (encontrados en la sección de información).
Solucionar problemas de inicio de sesión en DiscourseConnect relacionados con require_activation
Un problema común con el inicio de sesión SSO es: Record was invalid: User {:primary_email=>\"has already been taken\"}.
Esto puede ocurrir cuando el parámetro require_activation en la carga útil de SSO está establecido en true y el usuario tiene una cuenta existente en Discourse que aún no tiene un single_sign_on_record asociado, o tiene un single_sign_on_record, pero el external_id del registro no coincide con el external_id del usuario que intenta iniciar sesión.
Para confirmar esto, ingrese a la consola de Rails de su foro y busque un usuario que tenga la dirección de correo electrónico utilizada en el intento fallido de inicio de sesión SSO:
u = User.find_by_email('sally@example.com')
Ahora, verifique si existe un single_sign_on_record para este usuario:
sso_record = u.single_sign_on_record
Si el usuario existe en su foro pero no tiene un registro SSO, puede crear uno para él utilizando los valores del registro SSO:
SingleSignOnRecord.create!(user_id: 2, external_id: 2, external_email: 'sally@example.com', last_payload: '')
Ahora el usuario debería poder iniciar sesión.
Si existe un registro SSO para el usuario, pero su external_id no coincide con el external_id del intento de inicio de sesión fallido, deberá investigar por qué ocurrió esto. Una forma en que esto puede suceder es si la cuenta de un usuario ha sido eliminada y luego recreada en el sitio del proveedor de SSO. En este caso, puede actualizar el registro SSO para que utilice el nuevo external_id:
sso_record.external_id = <failed-sso-login-record-external_id>
sso_record.save!
Ahora el usuario debería poder iniciar sesión.
Si está utilizando el complemento WP Discourse y tiene el problema descrito anteriormente, consulte Validate Email Addresses with the WP Discourse plugin para obtener detalles sobre cómo resolver el problema sin necesidad de acceder a la consola de Rails.


I was trying it with the " < > " and it wasn’t working, of course ツ



Thank you!