아바타는 생성 시에만 동기화됩니다

안녕하세요!

저는 이 플러그인을 사용하여 Django 사이트에서 사용자를 동기화하고 있습니다. 하지만 아바타는 사용자 생성 시에만 동기화됩니다. 사용자가 Django에서 아바타를 변경해도 Discourse에는 동기화되지 않습니다.

실제로 Discourse의 managed_authenticator.rb에서 retrieve_avatar는 사용자가 이미 커스텀 아바타를 설정한 경우 미리 반환합니다:

  def retrieve_avatar(user, url)
    return unless user && url
    return if user.user_avatar.try(:custom_upload_id).present?
    Jobs.enqueue(:download_avatar_from_url, url: url, user_id: user.id, override_gravatar: false)
  end

제가 무언가를 놓친 것일까요, 아니면 discourse-openid-connect가 로그인 시 아바타를 업데이트할 수 없는 것일까요?

또한 “website”, “location”, "bio_raw"에 대해 질문이 있습니다. DiscourseConnect는 로그인 시 이를 동기화하는데, openidconnect도 이를 수행할 수 있을까요? 이들은 모두 OIDC 클레임에서 지원됩니다.

감사합니다!

저도 v3.1.3에서 같은 현상이 발생하고 있습니다…

네, 나도 아바타 표준화 문제로 고생하고 있습니다.

IdP(Entra)에서 제공되는 커스텀 picture 클레임을 사용하여, download_avatar_from_url에서 bearer token 인증 문제가 없는 아바타 호스트의 URL을 포함하려고 했었습니다. 일반 graph.microsoft 호스트에서는 그런 문제가 있거든요. 하지만 테스트해보니 플러그인이 /userinfo를 저장하고 JWT의 picture 클레임을 무시하는 것 같아서, 결국 막다른 골목에 다다랐습니다.

이 내용을 여기에 게시해야 할 것 같다는 걸 방금 깨달았어요. 하지만 이 PR을 이미 제출했습니다: FEATURE: managed auth can override avatars - Pull Request #34123 - discourse/discourse - GitHub

기여해 주셔서 감사합니다, @lewisakura. PR이 병합되었습니다!