Sin embargo, necesitamos verificar en un servicio diferente, utilizando la API de Discourse, si una dirección de correo electrónico existe en el sitio de Discourse. Podemos buscar por nombre de usuario o nombre mediante /u/search/users.json, pero estos no parecen devolver la dirección de correo electrónico.
¿Entonces, se puede buscar o consultar todas las direcciones de correo electrónico para compararlas?
Puedes usar el complemento Data Explorer para crear una consulta y luego llamar a la API de consultas después, en una consulta como SELECT * FROM user_emails.
Por usuario, también está disponible el endpoint https://meta.discourse.org/u/<username>/emails.json.
Sí, el enlace incluido en mi pregunta inicial es “Discourse Meta/emails.json”, pero ¿existe alguna forma de obtener todos los correos electrónicos de los usuarios? … Preferiría usar la API en lugar de implementar un plugin que permita consultas SQL, si es posible.
Nuestros puntos finales de API son los consumidos por la aplicación web; dado que registramos las consultas de correo electrónico en la aplicación web, no exponemos ninguna opción para extraer masivamente correos electrónicos.
La única forma, por ahora, es utilizar la solución mencionada anteriormente basada en el Explorador de Datos.
Para aclarar, estamos utilizando la API mediante una clave secreta. Entiendo que el front-end no tendría los mismos privilegios, pero ¿no es posible que la API tenga acceso?
Para dar más detalles, tenemos una aplicación y Discourse, ambos con autorización SSO en Auth0. Sin embargo, si alguien inicia sesión en nuestra aplicación, queremos asegurarnos de que tenga una cuenta en Discourse (y dirigirlos a ese enlace). Quizás no sea la mejor manera de verificar si Discourse ha registrado ese correo si primero llegan a nuestro sitio. Ese es un enlace a Discourse en caso de que el correo no haya sido registrado.
Si estás utilizando trueDiscourse SSO, puedes consultar la existencia de un usuario mediante su ID único externo, que se pasa en la carga útil del SSO, utilizando GET https://example.com/u/by-external/<EXTERNAL_ID>