# Multisite DiscourseConnect 提供程序头像错误

**URL:** https://meta.discourse.org/t/multisite-discourseconnect-provider-avatar-bug/356599
**Category:** Bug
**Tags:** discourseconnect
**Created:** [2025年三月10日 11:56 UTC](https://meta.discourse.org/t/multisite-discourseconnect-provider-avatar-bug/356599 "2025-03-10T11:56:23Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [2025年三月10日 11:56 UTC](https://meta.discourse.org/t/multisite-discourseconnect-provider-avatar-bug/356599/1 "2025-03-10T11:56:23Z")

</div>

**问题**  
在多站点环境中，[DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) Provider 在 payload 中为 user\_avatar 返回了不正确的 URL。

当 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 作为 provider 时，它返回的 `avatar_url` 格式丢失了 ‘uploads’ 和多站点主机的名称。

例如：

```plaintext
预期：https://cdn.cdnprovider.com/uploads/dbname/original/1X/1e653a3bc23b6b07017f5635128da0b353489e60.jpg'
实际：https://cdn.cdnprovider.com/original/1X/1e653a3bc23b6b07017f5635128da0b353489e60.jpg`

```

代码位于 [此处](https://github.com/discourse/discourse/blame/19acb6183485db08e37c623dad9ac1a783410d13/lib/second_factor/actions/discourse_connect_provider.rb#L83-L89)，它正在从上传中重建 URL。

```plaintext
      if current_user.uploaded_avatar.present?
        base_url =
          Discourse.store.external? ? "#{Discourse.store.absolute_base_url}/" : Discourse.base_url
        avatar_url =
          "#{base_url}#{Discourse.store.get_path_for_upload(current_user.uploaded_avatar)}"
        sso.avatar_url = UrlHelper.absolute Discourse.store.cdn_url(avatar_url)
      end

```

而 `user.uploaded_avatar.url` 似乎给出了正确的结果。

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [2025年三月10日 12:41 UTC](https://meta.discourse.org/t/multisite-discourseconnect-provider-avatar-bug/356599/3 "2025-03-10T12:41:36Z")

</div>

好的，我来看看 👀

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [2025年三月21日 14:54 UTC](https://meta.discourse.org/t/multisite-discourseconnect-provider-avatar-bug/356599/4 "2025-03-21T14:54:28Z")

</div>

将通过以下方式修复：

> <https://github.com/discourse/discourse/pull/31956>
>
> The URLs returned by DiscourseConnect for the user's avatar, profile and card ba…ckgrounds were not always correctly handling CDN.
> 
> This make use of the \`GlobalPath.full\_cdn\_url\` helper method which has been battle-tested.
> 
> Ref - https://meta.discourse.org/t/-/356599

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [2025年三月24日 07:00 UTC](https://meta.discourse.org/t/multisite-discourseconnect-provider-avatar-bug/356599/6 "2025-03-24T07:00:30Z")

</div>

此主题已在 2 天后自动关闭。不再允许回复。
