Usando external_id vía API

Hola,

Me gustaría crear y recuperar un usuario a través de la API utilizando un external_id. El external_id sería un entero que hace referencia a un ID en nuestra base de datos interna. Esto no está relacionado con SSO.

Estoy siguiendo la documentación pero no parece que funcione. Puedo crear el usuario pero no puedo recuperarlo por external_id. La API de Creación de Usuario solo muestra la solicitud para tener un objeto external_ids pero sin más información sobre el contenido del objeto. Busqué en la Comunidad y solo encontré este tema, pero no fue de mucha ayuda.

Estoy intentando recuperar el usuario utilizando la siguiente solicitud GET:

https://our_domain.discourse.group/u/by-external/7000.json

pero devuelve un 404 y la siguiente respuesta:

{
    "errors": [
        "La URL o el recurso solicitado no se pudo encontrar."
    ],
    "error_type": "not_found"
}

A continuación, se muestran ejemplos de algunas de las solicitudes de Creación de Usuario que he intentado. Los usuarios se crean con éxito, simplemente no puedo recuperarlos por external_id. (Nota al margen: ¿hay también una forma de ver el external_id de un usuario?):

{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_id": 7000
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_id": "7000"
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_ids": {
        "external_id": 7000
    }
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_ids": [
        7000
    ]
}

¿Está DiscourseConnect habilitado en su sitio? Si no es así, necesita encontrar el nombre del proveedor de su autenticador y usarlo en la solicitud. Aquí hay algunos detalles al respecto: Finding a user by their identity provider 'external ID'.

Gracias por tu respuesta.

Creo que eso significa que no podemos usar external_id, porque no queremos habilitar DiscourseConnect. No queremos reemplazar la autenticación de Discourse.

Probablemente tendremos que crear el usuario a través de la API, luego almacenar el Discourse user.id en nuestro sistema y referenciarlos de esa manera.

1 me gusta