Als Administrator eines Forums, das DiscourseConnect verwendet, erhalten Sie möglicherweise gelegentlich Meldungen von Benutzern, dass sie beim Versuch, sich im Forum anzumelden, eine Fehlermeldung erhalten. Zum Beispiel: „Es liegt ein Problem mit Ihrem Konto vor. Bitte kontaktieren Sie den Administrator der Website."
Aktivieren der ausführlichen DiscourseConnect-Protokollierung
Um das Problem zu debuggen, müssen Sie zunächst die Site-Einstellung „ausführliche DiscourseConnect-Protokollierung" in Discourse aktivieren. Wenn diese Einstellung bereits aktiviert war, können Sie direkt zu den Site-Protokollen unter Admin/Logs/Error Logs gehen. Wenn die Einstellung zuvor nicht aktiviert war, müssen Sie den Benutzer bitten, sich erneut anzumelden, damit Sie einen Protokolleintrag für seinen fehlgeschlagenen Anmeldeversuch generieren können.
Lesen des Protokolleintrags
Gehen Sie zu Admin/Logs/Error Logs und suchen Sie nach einem aktuellen Protokolleintrag, der mit Verbose SSO log: Record was invalid beginnt. Falls Sie Schwierigkeiten haben, den Eintrag zu finden, geben Sie „Record was invalid" in das Suchfeld am unteren Rand der Protokollseite ein. Klicken Sie auf den Protokolleintrag. Klicken Sie dann auf den Reiter „info" in der Protokoll-Symbolleiste:
Die Informationen, die Sie benötigen, sind der Grund (angegeben im Protokolleintrag) sowie die email und external_id (im Abschnitt „info" zu finden).
Beheben von DiscourseConnect-Anmeldeproblemen aufgrund von require_activation
Ein häufiges Problem bei der SSO-Anmeldung lautet: Record was invalid: User {:primary_email=>\"has already been taken\"}.
Dies kann auftreten, wenn der Parameter require_activation im SSO-Payload auf true gesetzt ist und der Benutzer bereits ein bestehendes Konto in Discourse hat, das entweder noch keinen single_sign_on_record besitzt oder einen single_sign_on_record hat, dessen external_id jedoch nicht mit der external_id des Benutzers übereinstimmt, der sich anmelden möchte.
Um dies zu bestätigen, öffnen Sie die Rails-Konsole Ihres Forums und suchen Sie nach einem Benutzer mit der E-Mail-Adresse, die beim fehlgeschlagenen SSO-Anmeldeversuch verwendet wurde:
u = User.find_by_email('sally@example.com')
Überprüfen Sie nun, ob für diesen Benutzer ein single_sign_on_record existiert:
sso_record = u.single_sign_on_record
Wenn der Benutzer auf Ihrem Forum existiert, aber keinen SSO-Eintrag hat, können Sie einen Eintrag mit den Werten aus dem SSO-Protokoll erstellen:
SingleSignOnRecord.create!(user_id: 2, external_id: 2, external_email: 'sally@example.com', last_payload: '')
Der Benutzer sollte sich nun anmelden können.
Wenn bereits ein SSO-Eintrag für den Benutzer existiert, dessen external_id jedoch nicht mit der external_id des fehlgeschlagenen Anmeldeversuchs übereinstimmt, müssen Sie untersuchen, warum dies geschehen ist. Dies kann beispielsweise passieren, wenn ein Benutzerkonto gelöscht und dann auf der Seite des SSO-Anbieters neu erstellt wurde. In diesem Fall können Sie den SSO-Eintrag aktualisieren, um die neue external_id zu verwenden:
sso_record.external_id = <failed-sso-login-record-external_id>
sso_record.save!
Der Benutzer sollte sich nun anmelden können.
Wenn Sie das WP Discourse-Plugin verwenden und auf das oben beschriebene Problem stoßen, finden Sie unter Validate Email Addresses with the WP Discourse plugin weitere Details zur Behebung des Problems, ohne auf die Rails-Konsole zugreifen zu müssen.


I was trying it with the " < > " and it wasn’t working, of course ツ



Thank you!