SSO レコードを API で削除する方法は?Discourse を使用しており、external_id を変更しようとしています。ユーザーや投稿を失わずに、この古いレコードを削除するにはどうすればよいでしょうか。
もしかしたら、Rails コンソールから一度 SSO レコードをすべて削除して、メールアドレスで再接続させてみてはどうでしょうか。どのテーブルを確認しているか正確には覚えていませんが、以下のようなコマンドかもしれません。
UserAssociatedAccount.all.destroy_all
この問題に関する他のトピックもあると思います。検索されましたか?
SSO プロバイダーから渡される external_id は、変更されないことが前提となっています。可能であれば、ユーザーの external_id 値を変更しないようにしてください。
SSO パラメータ require_activation を true に設定していない限り、Jay が述べたようにすべての SSO レコードを削除できます。これを行うには、サイトのコンソールにアクセスして以下を実行してください。
SingleSignOnRecord.destroy_all
この操作を行う前に、SSO ペイロード内で require_activation が true に設定されていないことを確認してください。このパラメータが設定されている場合、ユーザーは次回サイトへログインする際にメールアドレスに基づいて見つかりません。その代わりに、ログイン時にエラーが発生します。
require_activation パラメータが true に設定されていない場合、ユーザーは次回 Discourse にログインする際にメールアドレスに基づいて見つかります。この時点で、新しい SSO レコードが作成されます。もし SSO プロバイダーサイトと Discourse の間でユーザーのメールアドレスが同期されていない場合、次回 Discourse にログインする際に問題が発生します。これらの問題を修正する方法の詳細については、こちらをご覧ください: https://meta.discourse.org/t/debugging-and-fixing-common-sso-issues/103496/1。
上記のコマンドを実行する場合は、必ず実行前にサイトのデータベースのバックアップを作成してください。何か問題が発生した場合、バックアップファイルを復元できます。
DiscourseフォーラムのプランがSTANDARDですが、このプランでRailsコンソールへのアクセスは可能でしょうか?可能であれば、どのように進めればよいでしょうか?
上記のコマンドを実行するには、support@discourse.org にメールを送信するか、@support にご連絡ください。