Discourse 作为 identity provider 在 localhost 不起作用

我在本地设置了 discourse。现在我正尝试将 discourse 用作身份提供者。我遵循了本指南

但出现错误

GET http://localhost:3000/session/sso_provider?sso=bm9uY2U9MWc3NlQyaHRVZTZTYzJENjVEbzlzUT09JnJldHVybl9zc29fdXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS9yZWRpcmVjdA%3D%3D&sig=abcdb4a453080b7bac871d1d8d660bc731cfbc2a26fc6013f19a848c0018461c 422 (Unprocessable Entity)

注意:发起请求的客户端在 localhost 上,discourse 服务器也在 localhost 上。
我尝试在网上查找类似的问题,但没有找到任何帮助。我还在下面附上了我的 node js 代码供参考

app.get('/login', (req, res) => {
  let nonce = crypto.randomBytes(16).toString('base64');
  const payload = `nonce=${nonce}&return_sso_url=http://localhost:8081/redirect`
  const base64 = Buffer.from(payload).toString('base64')
  const URL_ENCODED_PAYLOAD = encodeURIComponent(base64)
  let hmac = crypto.createHmac('sha256', 'myrandomstring')
  hmac.update(URL_ENCODED_PAYLOAD)
  let HEX_SIGNATURE = hmac.digest('hex').toLowerCase()
  res.redirect(`http://localhost:3000/session/sso_provider?sso=${URL_ENCODED_PAYLOAD}&sig=${HEX_SIGNATURE}`)
})

有人能帮我弄清楚为什么它不起作用吗?谢谢。

我相当确定它需要 https,而 https 在本地主机上不起作用。

@pfaffman 它在本地主机上可以工作。原来是我这边的一个错误。但现在我遇到了一个问题:当我被重定向到 Discourse 页面时,我输入用户名和密码并点击登录,但它没有将我重定向回我的网站。我在这里读到了一篇类似的帖子 https://meta.discourse.org/t/discourse-doesnt-redirect-to-return-sso-url-after-user-logs-in-on-private-site/97201/4,但他们已经修复了社交登录的问题(我想不是用户名密码认证)。你能帮我解决这个问题吗?谢谢。

1 个赞