Utilizzo di external_id tramite API

Ciao,

Vorrei creare e recuperare un utente tramite l’API utilizzando un external_id. L’external_id sarebbe un intero che fa riferimento a un ID nel nostro database interno. Questo non è correlato all’SSO.

Sto seguendo la documentazione ma non riesco a farlo funzionare. Posso creare l’utente ma non riesco a recuperarlo tramite external_id. L’API Create User mostra solo la richiesta di avere un oggetto external_ids ma nessuna ulteriore informazione su quali dovrebbero essere i contenuti dell’oggetto. Ho cercato nella Community e ho trovato solo questo argomento, ma non è stato di grande aiuto.

Sto cercando di recuperare l’utente utilizzando la seguente richiesta GET:

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

ma restituisce un 404 e la seguente risposta:

{
    "errors": [
        "The requested URL or resource could not be found."
    ],
    "error_type": "not_found"
}

Di seguito sono riportati esempi di alcune delle richieste Create User che ho provato. Gli utenti vengono creati con successo, semplicemente non riesco a recuperarli tramite external_id. (Nota a margine: c’è anche un modo per visualizzare l’external_id di un utente?):

{
    "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
    ]
}

DiscourseConnect è abilitato sul tuo sito? In caso contrario, devi trovare il nome del provider del tuo autenticatore e utilizzarlo nella richiesta. Alcuni dettagli a riguardo sono qui: Finding a user by their identity provider 'external ID'.

Grazie per la tua risposta.

Penso che ciò significhi che non possiamo utilizzare external_id, perché non vogliamo abilitare DiscourseConnect. Non vogliamo sostituire l’autenticazione di Discourse.

Probabilmente dovremo creare l’utente tramite API, quindi memorizzare l’user.id di Discourse nel nostro sistema e fare riferimento ad esso in quel modo.

1 Mi Piace