OAuth redirige a /login después de llamada JSON de usuario exitosa

Mi configuración para OAuth básico se está comportando de manera bastante extraña. Tuve algunos errores iniciales durante la configuración y los he resuelto. Sin embargo, ahora puedo ver que el flujo va de Discourse → Punto de autorización de Cognito → Callback de Discourse → /login de Discourse. No hay advertencias ni errores en el registro y, al revisar los registros, puedo ver que se realizó una llamada JSON exitosa para obtener los datos del usuario.

Dado que parece tener un token exitoso y ha cargado los datos JSON, esperaría que la cuenta de usuario se registrara correctamente; en cambio, el usuario es redirigido a la página de inicio de sesión.

Por favor, vea los registros a continuación.

Depuración de OAuth2: respuesta de after_authenticate, credenciales: {"token" => "eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc2LTQ5OWEtYjdiN
7:48 p. m.
Depuración de OAuth2: user_json_url: GET https://api.lifebac.com/token/details?token=eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc
7:48 p. m.
Depuración de OAuth2: user_json_response: #<Excon::Response:0x00007f36a7608a30 @data={:body=>"{\"id\":\"d78dd9b5-7276-499a-b7b6-02da38e03ce9\", ...}", :cookies=>[], :host=>"api.lifebac.com", :headers=>{"Conten
7:48 p. m.
Depuración de OAuth2: user_json: {"id" => "d78dd9b5-7276-499a-b7b6-02da38e03ce9", ...}

Cualquier ayuda sobre lo que está ocurriendo sería de gran utilidad. Estoy más que dispuesto a proporcionar los backtraces si es necesario.

La redirección es normal, pero también debería aparecer una ventana emergente de registro. ¿La estás viendo?

La cuenta de usuario solo se crea después de que el usuario confirma los detalles de la cuenta y presiona “Crear”.

Hola David,

Por desgracia, esa información aparece en blanco y no hay nada que confirmar sin ingresar todos sus datos.

Además, ¿es posible confirmar automáticamente al usuario? Su correo electrónico ya está verificado de nuestro lado y me gustaría mantener esta experiencia lo más fluida posible para nuestros usuarios.

No es posible omitir el popup (por ahora), pero todo debería poblarse automáticamente con los datos de tu proveedor de identidad.

¿Cuáles son los valores de tu configuración de OAuth2? Tomemos oauth2_json_email_path como ejemplo.

Además, ¿podrías compartir la línea completa de “user_json” del registro para que podamos ver todas las claves? (puedes enmascarar los correos electrónicos).

Los datos completos eran

{"id"=>"d78dd9b5-7276-499a-b7b6-02da38e03ce9", "username"=>"patrick2"}

y los valores de los campos eran “id” y “username” para los campos aplicables.

Actualmente estoy actualizando el endpoint para agregar el correo electrónico y el nombre, pero tenía la impresión de que solo se requerían un id y un nombre de usuario.

Gracias

Patrick

Los datos mínimos para conectar la cuenta con una cuenta de Discourse son solo el id. Sin embargo, Discourse necesita un nombre de usuario y un correo electrónico. Por eso mostramos el modal de registro.

Si puedes agregar esa información a la API de OAuth, harás que todo sea mucho más fluido para tus usuarios :+1:

Sí, estoy trabajando en eso ahora mismo. Actualizaré el punto final para incluir también el correo electrónico y veré si eso resuelve el problema.

Aun así, en ese caso, ¿seguro que el nombre de usuario debería llegar al menos a la página de registro?

Gracias,

Patrick

Sí, debería. ¿Has configurado oauth2_json_username_path como username?

@david, ¡gracias, amigo! Ya tengo eso funcionando correctamente con los datos.

¿Cuál es la forma correcta de solicitar un indicador para confirmar automáticamente a los usuarios de OAuth?

Gracias,

Patrick

¿A qué te refieres con confirmar automáticamente? ¿Omitir la confirmación por correo electrónico o omitir el modal de registro?

La primera opción ya es posible. La segunda está en nuestra hoja de ruta para implementarla pronto.

¡Perfecto! ¡Me refería al segundo! Pero si ya está en tu radar, ¡entonces todo está bien!

¿La nueva configuración external_auth_skip_create_confirm de Automatically provision accounts with external SSO provider? (skip Create New Account prompt) - #6 by david es compatible con OAuth2?

¡Claro que sí! Es compatible con todos los proveedores de autenticación de Discourse (incluso Facebook, GitHub, Google, etc.) :smiley: