Creare User external_ids parameter

Sto cercando di scrivere una funzione per importare tutti gli utenti esistenti dal nostro sito esterno (un servizio di terze parti, sto solo creando il middleware) e sto provando a usare la funzione createUser. Funziona bene, tranne per il parametro external_ids. Indipendentemente da ciò che invio (ho provato array, oggetti… hai capito), l’ID esterno non viene salvato ma l’utente viene creato. Nessun errore.

C’è un formato specifico per l’oggetto external_ids?

Ho visto la soluzione sso_sync ma preferirei non intraprendere quella strada, soprattutto perché il parametro external_ids è incluso nell’API.

Qualche suggerimento? Grazie in anticipo.

Ciao, benvenuto :wave:

Per rispondere specificamente a questo, credo che il formato previsto sia qualcosa del tipo:

{ <nome_provider>: <id_univoco> }

1 Mi Piace

Grazie per la tua risposta e benvenuto!

Ho provato il formato che hai inviato e la richiesta è passata ma nessun ID esterno viene ancora salvato :confused: "external_ids": {},

Ecco un esempio del codice che sto usando (nodejs)

const create = await connection.post('/users.json', {
            name: `${req.body.first_name} ${req.body.last_name}`,
            email: req.body.email,
            password: test_password,
            username: `${req.body.first_name}_${req.body.last_name}`,
            external_ids: JSON.stringify({ 'magento': req.body.user_id }),

C’è qualcosa che devo definire prima o qualcosa che vedi di sbagliato?

Hai configurato correttamente l’autenticatore? Credo che il codice pertinente sia il seguente:

Ho già configurato l’SSO e sono riuscito a reindirizzare dal sito di terze parti a Discourse, ma non ricordo alcun punto in cui definire il provider se non quando si definiscono i discourse connect provider secrets. Mi manca qualcosa?

Hmm, ok. Se stai usando DiscourseConnect, da una lettura del codice, sembra che tu non possa aggiungere l’external id durante la creazione. Il codice appena sopra gestisce solo gli account associati che sono diversi dall’SSO.

Puoi provare a effettuare due chiamate: la prima chiamata uguale a quella che hai ora, ma senza gli external ids, e una seconda chiamata a updateUser, includendo le informazioni sull’external id? Speriamo che funzioni.

1 Mi Piace

Grazie per il tuo aiuto, e sì, sto usando DiscourseConnect, che è probabilmente il motivo per cui non funziona. Penso che questo sia l’approccio che dovrò adottare. O questo, oppure dovrò fare una seconda chiamata che effettua il login SSO dell’utente con l’ID esterno in modo che sia collegato alla sua email.

Modifica: Penso che anche updateUser avrà lo stesso problema poiché non ho un provider definito, quindi probabilmente il login SSO è la mia migliore opzione.

Quindi, solo per aggiornare e chiudere questo, l’unica soluzione che ha funzionato è stata eseguire sso_sync dopo aver creato un nuovo utente, e anche questo non è stato molto necessario perché una volta che l’utente tenta di accedere a discourse tramite SSO, la sincronizzazione avverrà comunque via email, a quanto pare.
Grazie a tutti coloro che hanno aiutato.

2 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.