Wir müssen jedoch in einem anderen Dienst über die Discourse-API prüfen, ob eine E-Mail-Adresse auf der Discourse-Seite existiert. Wir können zwar über /u/search/users.json nach Benutzernamen oder Namen suchen, aber dabei scheint die E-Mail-Adresse nicht zurückgegeben zu werden.
Kann man also alle E-Mail-Adressen zum Vergleich durchsuchen oder abfragen?
Sie können das Data Explorer-Plugin verwenden, um eine Abfrage zu erstellen und anschließend die Query-API in einer Abfrage wie SELECT * FROM user_emails aufzurufen.
Pro Benutzer gibt es außerdem den Endpunkt https://meta.discourse.org/u/<username>/emails.json.
Ja, der in meiner ursprünglichen Frage enthaltene Link lautet “Discourse Meta/emails.json”, aber gibt es eine Möglichkeit, alle Benutzer-E-Mails abzurufen? … Ich würde es vorziehen, die API zu nutzen, anstatt ein Plugin zu implementieren, das SQL-Abfragen erlaubt, falls dies überhaupt möglich ist.
Unsere API-Endpunkte werden von der Web-App genutzt. Da wir E-Mail-Abfragen in der Web-App protokollieren, stellen wir keine Möglichkeit bereit, E-Mail-Adressen im Batch abzugreifen.
Der einzige Weg, der derzeit möglich ist, besteht in der oben genannten Lösung auf Basis des Data Explorers.
Nur zur Klarstellung: Wir nutzen die API über einen geheimen Schlüssel. Mir ist bewusst, dass das Frontend nicht über dieselben Berechtigungen verfügt. Kann die API jedoch keinen Zugriff erhalten?
Um etwas genauer zu werden: Wir haben eine App und Discourse, beide sind über Auth0-SSO autorisiert. Wenn sich jemand in unserer App anmeldet, möchten wir sicherstellen, dass dieser Nutzer auch ein Discourse-Konto besitzt (und ihn entsprechend dorthin weiterleiten). Vielleicht ist es nicht der beste Weg, zu prüfen, ob Discourse diese E-Mail-Adresse registriert hat, wenn der Nutzer zuerst auf unserer Seite landet. Dies ist ein Link zu Discourse für den Fall, dass die E-Mail-Adresse noch nicht registriert ist.
Wenn Sie echteDiscourse SSO verwenden, können Sie das Vorhandensein eines Benutzers über seine externe eindeutige ID abfragen, die im SSO-Payload übergeben wird, indem Sie GET https://example.com/u/by-external/<EXTERNAL_ID> aufrufen.