Oauth2 plugin: avatar 未使用

您好,

我将在此处引用的一个问题拆分为一个主题:Discourse OAuth2 Basic - #304 by nodomain
此处 Discourse OAuth2 Basic - #316 by jmlord (这是我)
以及可能在这里 User avatar not updating on re-log in

账户创建成功,但头像未包含。示例响应:

Body: {
  "access_token":"...",
  "token_type":"bearer",
  "expires_in":"3600",
  "scope":"profile",
  "profile" : {
    "id":1234,
    "email": "...",
    "name": "...",
    "picture": "https://somedomain.com/somevalidpicture.jpg"
  }
}

变量 oauth2 callback user info paths 包含值 avatar:profile.picture,并且已正确解析,因为它出现在以下日志中:

OAuth2 Debugging: after_authenticate response:

creds: {"token"=>"...", "expires_at"=>1702053692, "expires"=>true}
uid: 1234
info: {"email"=>"...", "name"=>"...", "avatar"=>"https://members.geobon.org/pages/profile-picture/62146-17077.jpg"}
extra: {}

我已检查图片地址是否正确,其尺寸为 300x300。这是示例

我检查了存储图片的服务器日志,在创建账户和首次登录期间没有尝试下载此图片。

有什么想法可以解释为什么这对我们不起作用?(显然,它在其他一些配置下是有效的……)

1 个赞

嗯,我不确定是否可以获取头像

Lillian,您好,感谢您的帮助。

引用的帖子似乎是终结点不是文件直接链接的情况。这里有点不同,我们直接提供文件链接。

另外,这似乎在某些情况下有效:

此外,“oauth2 回调用户信息路径”属性的工具提示显示:

令牌响应中用于其他用户属性的路径。支持的属性有 name、username、email、email_verified 和 avatar。格式为 property:path,例如:name:params.info.name

如果不是通过 URL,我们该怎么做?我应该在文件中 base64 编码它吗?

编辑:我将尝试两步过程,其中图像头像结果在另一个查询中,而不是在令牌响应中,然后我将再次发布。

好的,我通过两步法解决了这个问题。看起来工具提示不正确,或者插件的这部分存在 bug:

oauth2 callback user info paths : … 支持的属性有 name、username、email、email_verified 以及 avatar

后者并非事实。要使头像生效,需要为用户详细信息添加一个 JSON 端点,选中“为 OAuth2 获取用户 JSON”,并填写 oauth2 json avatar path 属性。

1 个赞