我们使用基于本指南实现的 Discourse SSO 流程:Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)
该流程一直运行良好。但现在我们希望允许系统内的用户更改其电子邮件地址,这似乎引发了一些问题。
当我们在系统中更改用户的电子邮件地址时,到 Discourse 的 SSO 登录就会停止工作。
登录错误
您的账户存在问题。请联系站点管理员。
我猜测 Discourse 接收到的负载中包含不匹配的电子邮件和用户名,因此不知如何处理。
有什么好的处理方法吗?
我想到的最佳方案是:在发起 SSO 之前,先使用 Discourse API 将 Discourse 中用户的电子邮件地址更新为与系统中一致。
但我不确定这是否可行。以下是我失败的尝试。
我的请求如下:
https://forum-stage.{domain}.com/users/{username}/preferences/email
Headers:
Content-Type: application/x-www-form-urlencoded
Accept: application/json
Body(在 Postman 中作为 x-www-form-urlencoded 格式):
email: testemail@testdomain.com
api_key: 75a...77d
api_username: system
收到的响应如下:
{
"errors": [
"您无权查看所请求的资源。"
],
"error_type": "invalid_access"
}