Créer l'utilisateur paramètre external_ids

J’essaie d’écrire une fonction pour importer tous les utilisateurs existants de notre site externe (tiers, je ne fais que le middleware) et j’essaie d’utiliser la fonction createUser. Cela fonctionne bien, sauf pour le paramètre external_ids. Peu importe ce que j’envoie (j’ai essayé des tableaux, des objets… vous l’appelez), l’ID externe n’est pas enregistré mais l’utilisateur est créé. Aucune erreur.

Existe-t-il un format spécifique pour l’objet external_ids ?

J’ai vu la solution sso_sync mais je préférerais ne pas m’engager dans cette voie, d’autant plus que le paramètre external_ids est inclus dans l’API.

Des conseils ? Merci d’avance.

Salut, bienvenue :wave:

Pour répondre spécifiquement à cela, je pense que le format attendu est quelque chose comme :

{ <nom_fournisseur>: <identifiant_unique> }

1 « J'aime »

Merci pour votre réponse et bienvenue !

J’ai essayé le format que vous avez envoyé et la requête a réussi, mais aucun ID externe n’est toujours enregistré :confused: "external_ids": {},

Voici un exemple du code que j’utilise (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 }),

Y a-t-il quelque chose que je dois définir avant ou quelque chose que vous voyez de mal ?

Avez-vous correctement configuré l’authentificateur ? Je pense que le code pertinent est le suivant :

J’ai déjà configuré le SSO, et j’ai pu rediriger depuis le site tiers vers Discourse, mais je ne me souviens d’aucun endroit pour définir le fournisseur, sauf lors de la définition des secrets du fournisseur Discourse Connect. Est-ce que quelque chose m’échappe ?

Hmm, d’accord. Si vous utilisez DiscourseConnect, d’après la lecture du code, il semble que vous ne puissiez pas ajouter l’identifiant externe lors de la création. Le code juste au-dessus ne gère que les comptes associés, qui sont différents du SSO.

Pouvez-vous essayer de faire deux appels : le premier appel identique à celui que vous avez maintenant, mais sans les identifiants externes, et ajouter un deuxième appel à updateUser, incluant les informations de l’identifiant externe ? Espérons que cela fonctionne.

1 « J'aime »

Merci pour votre aide, et oui, j’utilise DiscourseConnect, ce qui explique probablement pourquoi cela ne fonctionne pas. Je pense que c’est l’approche que je vais finir par devoir adopter. Soit cela, soit je dois faire un deuxième appel qui connecte l’utilisateur via SSO avec l’identifiant externe afin qu’il soit lié à son e-mail.

Modification : Je pense que updateUser aura le même problème car je n’ai pas de fournisseur défini, donc la connexion SSO est probablement ma meilleure option.

Pour faire le point et clore ce sujet, la seule solution qui a fonctionné a été d’exécuter sso_sync après la création d’un nouvel utilisateur, et même cela n’était pas très nécessaire car une fois que l’utilisateur tente de se connecter à Discourse via SSO, la synchronisation se produit de toute façon par e-mail semble-t-il.
Merci à tous ceux qui ont aidé.

2 « J'aime »

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