Benutzer external_ids Parameter erstellen

Ich versuche, eine Funktion zu schreiben, um alle vorhandenen Benutzer von unserer externen Website zu importieren (Drittanbieter, ich erstelle nur die Middleware) und ich versuche, die createUser-Funktion zu verwenden. Sie funktioniert einwandfrei, außer beim Parameter external_ids. Egal was ich dort sende (ich habe Arrays, Objekte… Sie nennen es) ausprobiert, die externe ID wird nicht gespeichert, aber der Benutzer wird erstellt. Keine Fehler.

Gibt es ein bestimmtes Format für das external_ids-Objekt?

Ich habe die SSO-Sync-Lösung gesehen, aber ich würde diesen Weg lieber nicht einschlagen, zumal der Parameter external_ids in der API enthalten ist.

Irgendwelche Tipps? Vielen Dank im Voraus.

Hallo, willkommen :wave:

Um dies speziell zu beantworten, glaube ich, dass das erwartete Format so etwas ist:

{ <provider_name>: <unique_id> }

1 „Gefällt mir“

Vielen Dank für Ihre Antwort und willkommen!

Ich habe das von Ihnen gesendete Format ausprobiert und die Anfrage wurde erfolgreich verarbeitet, aber es werden immer noch keine externen IDs gespeichert :confused: "external_ids": {},

Hier ist ein Beispiel des Codes, den ich verwende (Node.js)

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 }),

Gibt es etwas, das ich vorher definieren muss, oder sehen Sie etwas Falsches?

Haben Sie den Authentifikator korrekt eingerichtet? Ich glaube, der relevante Code ist der folgende:

Ich habe SSO bereits eingerichtet und konnte von der Drittanbieter-Website zu Discourse weiterleiten, aber ich erinnere mich nicht mehr an eine Stelle, an der der Anbieter definiert werden kann, außer bei der Definition von discourse connect provider secrets. Fehlt mir da etwas?

Hmm, okay. Wenn Sie DiscourseConnect verwenden, sieht es nach dem Lesen des Codes so aus, als könnten Sie die externe ID nicht beim Erstellen hinzufügen. Der obige Code behandelt nur verknüpfte Konten, die sich von SSO unterscheiden.

Können Sie zwei Aufrufe versuchen: zuerst den gleichen Aufruf wie jetzt, aber ohne die externen IDs, und dann einen zweiten Aufruf an updateUser mit den externen ID-Informationen? Hoffentlich funktioniert das.

1 „Gefällt mir“

Vielen Dank für Ihre Hilfe, und ja, ich benutze DiscourseConnect, was wahrscheinlich der Grund ist, warum dies nicht funktioniert. Ich denke, das ist der Ansatz, den ich am Ende verfolgen muss. Entweder das oder ich muss einen zweiten Aufruf machen, der den Benutzer mit der externen ID per SSO anmeldet, damit er mit seiner E-Mail verknüpft wird.
Bearbeiten: Ich denke, updateUser wird dasselbe Problem haben, da ich keinen definierten Anbieter habe, daher ist die SSO-Anmeldung wahrscheinlich meine beste Wahl.

Um dies zu aktualisieren und abzuschließen: Die einzige Lösung, die funktionierte, war die Ausführung von sso_sync nach der Erstellung eines neuen Benutzers, und selbst das war nicht sehr notwendig, da die Synchronisierung anscheinend sowieso über E-Mail erfolgt, sobald der Benutzer versucht, sich bei Discourse per SSO anzumelden.
Vielen Dank an alle, die geholfen haben.

2 „Gefällt mir“

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