EGreg
(Greg Magarshak)
1
我已在 https://forum.mycoralapp.com 上成功设置了 Discourse SSO。
并且我能够首次创建用户,并附带他们自己的电子邮件、姓名、用户名和头像。
但是问题是,当用户在我们这边(在应用程序中)更改信息后,我该如何更新他们?我注销并使用 SSO 重新登录,发送了不同的姓名、用户名和照片,但旧的信息仍然保留。我还检查了这些选项,这似乎应该会覆盖至少头像,但没有任何效果:
姓名和用户名是否始终可以更改?为什么它没有与“头像”一起提及?实际上,尽管如此,什么都没有改变。
1 个赞
pfaffman
(Jay Pfaffman)
2
您的应用运行的 Discourse Connect 代码是什么?听起来它没有以正确的方式发送信息。
2 个赞
EGreg
(Greg Magarshak)
3
类似这样的:Here is some PHP code and you'd do similar for iOS and Android. Remember to intercept the URL request in WebView! · GitHub
它足以创建账户,并包含正确的信息。但它在后续登录时无法覆盖。
根据这个 我必须进入 Rails 应用并设置 SiteSetting.discourse_connect_overrides_avatar 之类的东西。我不知道这是因为说明太旧了,还是因为管理控制面板甚至不包含“覆盖名称”和“覆盖用户名”之类的东西。
2 个赞
@EGreg 你找到解决方案了吗?
我遇到了同样的问题,使用的是自托管的 Discourse。
尽管启用了“覆盖用户名”设置,但 SSO 登录似乎并未覆盖在实施 SSO 之前就已存在的现有帐户的用户名。
EGreg
(Greg Magarshak)
5
@pfaffman 帮助了我,我认为这奏效了。我得再检查一下。Jay?
1 个赞
pfaffman
(Jay Pfaffman)
6
抱歉。我不知道现有账户如何连接,也不知道它们是否会被重命名,否则我会回复另一个话题。
1 个赞
simon
7
查看此主题的 OP,我看到屏幕截图中未显示 auth overrides username 设置已启用。需要启用该设置才能让 DiscourseConnect 覆盖用户名。如果设置页面更清楚地表明这三个设置与 DiscourseConnect 相关,那就太好了:
auth overrides email
auth overrides username
auth overrides name
另外,请确保用户已退出 Discourse,然后通过 DiscourseConnect 重新登录。如果他们不退出 Discourse,更改将不会生效。您可以通过代表用户调用 sync_sso 路由的 API 来解决此问题:https://meta.discourse.org/t/sync-discourseconnect-user-data-with-the-sync-sso-route/84398。
3 个赞
谢谢大家。
我换了个用户名再试了一次,成功了。
我猜这和 discourse 用户名规则有关。因为新用户名以_开头,不符合 discourse 规则,所以可能无法在论坛上反映出来。
2 个赞