Но вопрос в том, как обновить данные, когда они меняются на нашей стороне (в приложении)? Я выхожу из системы и снова вхожу через SSO, передавая другое имя, имя пользователя и фото, но старые данные остаются. Я также установил соответствующие галочки в админ-панели, что, казалось бы, должно переопределить хотя бы аватар, но ничего не происходит:
Этого достаточно для создания учётной записи с правильной информацией. Однако при последующих входах она не перезаписывается.
Согласно этой статье, мне нужно зайти в приложение на Rails и настроить такие параметры, как SiteSetting.discourse_connect_overrides_avatar. Не знаю, связано ли это с тем, что инструкции устарели, но в панели администратора даже нет таких опций, как «переопределить имя» и «переопределить имя пользователя».
@EGreg, вы уже нашли решение этой проблемы?
У меня возникла та же проблема с самостоятельно размещённым Discourse.
Вход через SSO, похоже, не перезаписывает имя пользователя для существующих учётных записей, созданных до внедрения SSO, даже если включена настройка «Перезаписывать имя пользователя».
Изучив первый пост в этой теме, я вижу, что на скриншоте настройка auth overrides username не отображается как включённая. Для того чтобы DiscourseConnect мог заменять имя пользователя, необходимо включить эту настройку. Было бы здорово, если бы на странице настроек стало более очевидно, что эти три параметра относятся к DiscourseConnect:
auth overrides email
auth overrides username
auth overrides name
Также убедитесь, что пользователи выходят из системы Discourse, а затем входят снова через DiscourseConnect. Если они не выйдут из Discourse, изменения не вступят в силу. Вы можете обойти эту проблему, выполнив API-запрос к маршруту sync_sso от имени пользователя: Sync DiscourseConnect user data with the sync_sso route.
Спасибо всем.
Я попробовал снова с другим именем пользователя, и это сработало.
Я понял, что это связано с правилами именования пользователей в Discourse. Так как новое имя начиналось с нижнего подчёркивания, оно считалось недопустимым согласно правилам Discourse, и это, вероятно, стало причиной того, что оно не отобразилось на форуме.