DiscourseConnect 提供商户问题

这个设置是否只做这一件事?

我觉得它在 WP 中的命名和描述相当模糊,所以我想知道它是否还有其他作用?

关于此,

如果一个用户已同时存在于 Wordpress 和 Discourse 中,该怎么办?如何合并/关联他们的个人资料?

严格来说,它的作用是调用 Discourse 的 sync_sso 路由,并在用户登录 WordPress 后立即将他们的数据(WordPress 用户 ID、用户名、姓名、电子邮件等)传递给 Discourse。有关 sync_sso 路由的详细信息,请参见此处:https://meta.discourse.org/t/sync-discourseconnect-user-data-with-the-sync-sso-route/84398。

据我所知,对于从未访问过 Discourse 站点的 WordPress 用户来说,唯一的副作用是他们将开始收到来自 Discourse 的摘要电子邮件。

这就是为什么您希望鼓励您的 Discourse 用户在 WordPress 上使用与他们在 Discourse 上使用的电子邮件地址相同的地址进行注册。只要电子邮件地址匹配,他们就会登录到正确的 Discourse 帐户。这假设您已处理了我们在先前帖子中讨论过的电子邮件验证问题。

您很可能会遇到一些用户在 WordPress 上使用的电子邮件地址与他们在 Discourse 上使用的不同。在这种情况下,将为他们创建一个新的 Discourse 帐户,使用 WordPress 的电子邮件地址。您需要手动将旧的 Discourse 帐户合并到新的 Discourse 帐户中:https://meta.discourse.org/t/merge-user-accounts/275288。

3 个赞

如果我们必须在WordPress中手动更新用户的电子邮件,会发生什么?如果启用了此设置,他们的Discourse电子邮件也会被更新吗?

1 个赞

从他们的WordPress个人资料页面更新用户不会触发对sync_sso的调用。这可能应该这样做。目前,您需要要求他们从WordPress注销,然后重新登录WordPress。我认为管理员无法从其个人资料页面注销WordPress用户。

如果您想在WordPress和Discourse之间同步电子邮件和/或用户名,请启用这些Discourse设置:

  • auth overrides email
  • auth overrides username
1 个赞

谢谢 Simon。在考虑了所有因素后,我认为我将采用以下流程:

  • 从 Discourse 导出用户
  • 激活 Discourse Connect
  • 将这些用户导入并创建到 WordPress 中,并将他们的电子邮件标记为已验证
  • 当这些用户登录时(通过自定义登录页面),他们必须重置密码
    • 以某种方式强制只有这部分用户在输入他们的电子邮件(并且系统识别出他们属于这部分用户)后更改密码
    • 或者,仅在登录页面显示消息:“如果您在 [日期] 之后登录,则必须重置密码”
  • 访问应该可以正常工作!

至于新注册的用户,我需要找到一种验证电子邮件的方法。我可能会直接通过电子邮件向他们发送密码。

我还注意到,即使在 WordPress 配置文件中未选择“电子邮件地址已验证”设置,用户仍然可以 SSO 到 Discourse。不过,他们第一次进入 Discourse 时仍然需要确认他们的电子邮件。这很好。

这些设置有什么副作用吗?

1 个赞

是的,这就是它的预期工作方式。这对大多数用户来说不是什么障碍。您需要注意的问题是,如果电子邮件地址在 WordPress 中未被标记为已验证,Discourse 在用户首次通过 DiscourseConnect 登录 Discourse 时,将不会根据电子邮件地址将 WordPress 用户与 Discourse 用户进行匹配。只要您找到一种方法将导入用户的电子邮件地址标记为已验证,就不会造成问题。如果您不将它们标记为已验证,那将很难处理。

如果启用,它们将阻止用户在 Discourse 中更改其用户名或电子邮件地址。

1 个赞

是的,我测试了很多次,然后才意识到这一点。我将编写一个自定义脚本,将我导入的所有用户标记为已验证。

感谢您的澄清!

1 个赞

将 verbose /logs 永久保留是否可以?

这是否会对性能产生负面影响?

我见过一些情况,它们一直保持开启状态。我认为这对性能没有实质性影响。如果你的问题与 DiscourseConnect 无关,它只会让你的日志变得混乱。

2 个赞

到目前为止一切都运行得很顺利!

我注意到的一件小事是,无论我在此字段中输入什么路径:

都会变成默认的 WordPress 登录页面。
例如,如果我现在尝试转到 /wp-admin,这是我以前用来登录管理员的,它会重定向到 /login/forum

理想情况下,只有当有人从 discourse 论坛点击登录按钮时,它才会重定向到这里。

我想知道这是否是正常行为,以及它这样运作是否不好。

这是预期行为。“登录页面路径”选项用于覆盖默认的 WordPress 登录路径。它通过挂钩到 WordPress 的 login_url 过滤器来实现这一点。

它不会删除 /wp-login.php 处的默认登录路由,因此您仍然可以通过在浏览器的地址栏中输入它来直接访问该 URL。不要转到 /wp-admin,而是转到 /wp-login.php 来使用默认登录页面。

我想到了一个方法,可以通过该方法更新插件,使其仅重定向到“登录页面路径”以登录 Discourse,但这需要一些工作。

4 个赞

没关系。只是小事一桩。感谢您的见解!

1 个赞

@simon,我在日志中看到以下错误,想知道它们是什么意思以及如何解决。在用户报告登录出错后注意到这些错误:

  • (google_oauth2) 身份验证失败!csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF 检测到

  • 身份验证失败!request_error: OAuth::Unauthorized, 401 未授权

  • (facebook) 身份验证失败!no_authorization_code: OmniAuth::Strategies::Facebook::NoAuthorizationCodeError,必须传递 code(通过 URL 或 fbsr_XXX 签名请求 cookie)

值得注意的是,这些错误并不常见。大多数日志似乎都能成功运行:

刚收到用户发来的截图:

他说:“没有电子邮件。一旦你点击注册链接,就会出现以下页面……”

当我点击登录/注册链接(在隐身模式下)时,对我来说是有效的。
这是我们论坛的URL供参考:forum.projectvanlife.com

我假设以“Verbose SSO log”开头的条目显示的是成功的登录。

对于“google_oauth2”、“OAuth::Unauthorized”和“facebook”错误,我不确定发生了什么。您的 Discourse 站点之前是否配置为允许用户通过 Google 和 Facebook 登录?如果是,现在启用了 DiscourseConnect,他们将无法通过这些方式登录。也许可以尝试在 Discourse 设置页面禁用 Google 和 Facebook 登录。

对于报告登录错误的用户,请尝试查找与用户登录尝试相关的详细 SSO 日志错误消息。然后查看错误是否与此主题中描述的任何问题匹配:https://meta.discourse.org/t/debug-and-fixing-common-discourseconnect-issues/103496。

浏览器地址栏中显示的 URL 是 https://projectvanlife.com/login/forum/javascript%3Avoid(0

我假设一些 javascript 被截断了,实际上它应该被解码为 javascript:void(0)。我不确定它来自哪里。可能是用户浏览器扩展程序之一。尝试让他们禁用浏览器扩展程序,或尝试从隐身窗口登录。

编辑:@Sami_Syed 当点击登录页面的“注册”链接时,javascript:void(0) 代码会被附加到路径。该链接的 href 元素是:\"javascript%3Avoid(0)\"

我猜它的用途是让注册表单与登录表单位于同一路径。但有些地方出了问题。您知道在启用 DiscourseConnect 之前这是否正常工作吗?

如果用于登录/注册表单的插件有一个选项可以将注册表单显示在单独的页面上,启用该选项应该可以作为该问题的快速修复。

我今天大部分时间都会离线,但如果您遇到困难,稍后可以尝试提供帮助。

编辑:我对这个问题感到困惑,所以又看了一下。“注册”选项卡在登录表单上工作正常。点击“注册”链接会出现我上面描述的问题:

因此,该问题的快速修复方法是删除注册链接。

2 个赞

这是正确的。

是的,之前启用了。但问题是,他们现在是如何触发通过 FB 或 Google 登录的?我们当前的登录页面没有该功能。

或者这个错误是针对那些最初使用 G 或 FB 注册,现在尝试登录但无法成功的人出现的?

如果是这种情况,我该如何解决?

正如我所见,这是因为我没有在那里设置正确的链接。糟糕。抓得好,谢谢!

我不知道是什么可能触发了它。也许是用户浏览器缓存了身份验证提供商的 URL。但这只是猜测。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.