Мы интегрируем Discourse с платформой на PHP/Laravel, где реализован SSO. Пользовательские аватары обновляются только один раз. Однако, если я изменяю фотографию профиля в платформе Laravel, пользовательское изображение не обновляется в Discourse, даже после выхода из системы и повторного входа.
Даже при передаче параметра ‘avatar_force_update’ со значением true, пользовательское изображение аватара не перезаписывается.
Я вижу, что URL изображения профиля обновил запись SSO, однако новое изображение профиля не отображается в Discourse, даже после выхода из системы и повторного входа.
Спасибо за ответ. Если я перезагружу браузер, открою его в режиме инкогнито или даже выйду из системы и войду снова, обновление не происходит.
Как уже упоминалось, обновление происходит только в первый раз. Например:
Новый пользователь имеет аватар и впервые подключается к Discourse через SSO — аватар обновляется.
Или у пользователя изначально нет аватара, и он обновляет его на платформе — в этом случае изменения отражаются в Discourse.
Но если у пользователя уже есть аватар и он обновляет его на платформе, то в Discourse это не отражается, даже если выйти из системы и войти снова или попробовать в другом браузере. Я вижу, что URL изображения профиля в записи SSO обновился, но сам аватар не изменился.
Если вы не можете включить эту настройку или просто хотите понять, что происходит, проверьте, интерпретируется ли значение параметра avatar_force_update, которое вы передаёте, как булево true в Discourse. В некоторых фреймворках (особенно в WordPress) булевы значения преобразуются в 0 или 1. Чтобы обойти эту проблему, Discourse принимает строку "true" в качестве булевого значения в полезной нагрузке SSO. Вы можете подтвердить это, посмотрев на значение поля avatar_force_update в записи SSO, отображаемой на странице администратора пользователя, или включив настройку подробного ведения журнала, о которой упомянул Джей.