为 Discourse 配置 Twitter 登录和丰富的嵌入

坦白说,与 2020 年 12 月的那个问题不同,这是 Discourse 团队的另一个问题。那个不同问题的最后一篇帖子就在 @dnfoz 在此的第一个帖子之前,而且那已经是 1 年多以前了。@dnfoz 的问题是 8 天前刚发布的,而不是几个月前。问题在于 Twitter 正在不断更改其 API,因为他们——坦白说——不知道他们的平台目标是什么。这就是为什么一年前的问题与大约一周前的问题会完全不同,尤其是对于 Twitter 而言。如果这是几个月前的问题,除了通过潜移默化和读心术之外,你或其他人必须发帖说明,他们才能知道。

2 个赞

在注册时,它似乎不起作用,没有自动填充电子邮件字段?是我做错了什么吗?它适用于我的谷歌注册,它会自动填充电子邮件。

1 个赞

请看 @dnfoz 的例子。这是因为每个 SSO 提供商都不同,这意味着 Google 的做法与 Twitter 的做法略有不同,而 Twitter 是最糟糕的(如果不是最糟糕的话)。Twitter 的 API 是一个不断变化的目标,因为 Twitter 不知道自己在做什么,而且 Twitter 对围绕其 API 进行开发的开发者没有任何礼貌。所以,说实话,除非我们 Discourse 管理员或 Discourse 团队不断地为 Twitter 端的变化而密切关注这个插件,否则它会像这样不断中断。

2 个赞

谢谢。是的,我认为我不应该再浪费时间学习和摆弄 Twitter API 了,正如你所说,它们随时可能发生变化。我相信我的用户会适应的!

2 个赞

这并不意味着 Discourse 团队还没有在修复,他们确实在努力,可能只需要更新插件就可以让它在管理员端再次工作。问题在于,这是 Twitter 长期存在的一个问题,因为他们是一家管理不善的公司。我仍然会保留我的 Twitter SSO 插件作为一种选择,但 Twitter 绝对不像其他 SSO 那样是一个安全可靠的选择。

1 个赞

如果我们仍然遇到这些问题,能否尝试在 try.discourse.org 上重现相同的问题?我可以在那里使用我的 Twitter 账户顺利登录。

4 个赞

Wow, using Twitter to sign up on the try subdomain forum you just shared worked perfectly. This really makes me wonder if there’s a plugin conflict or some unique configuration issue happening here.

2 个赞

很奇怪。我的网站上仍然出现奇怪的行为。这是生产环境,所以我不能随意更改太多设置,但我会尽力找出原因。如果其他用户也报告了这个问题,那它一定不是那么独特。

1 个赞

与此处父帖子相比,Twitter 在配置设置方面在视觉上进行了更改。至少,这是我为 Discourse 实例配置的内容(在论坛上可以安全公开共享的设置):

编辑:这可能有点问题。虽然仍然有要求用户提供电子邮件的选项,但不再有父帖子中提到的“启用第三方身份验证”设置。对于在此更改之前已配置其 Twitter 登录的用户来说,这可能不是问题,因为 Twitter 可能会保留他们并迁移他们的设置。但是,我再也看不到此选项了,这可能会给像我和 @dnfoz 这样首次配置论坛的用户带来问题,而 Discourse 需要第三方身份验证才能成功完成 SSO 握手过程。

编辑 2:还有另一件事值得思考。Discourse 是期望 Twitter API v1 还是 v2?对于新开发者来说,他们不再提供 v1,因为他们只提到迁移那些已经在使用 v1 的人,而没有提及对新用户的旧版 v1 支持。在此处查看详细信息:

如上述链接所述,似乎他们只允许预先存在的开发者帐户迁移 v1。我找不到启用新开发者帐户上 v2 的方法或文档,因此我只有 v2 支持。

因此,假设 SSO 和嵌入期望的是 Twitter API v1,这可能需要一些编码工作来支持两个 API 版本,或者如果无法实现这种双管齐下的方法,则放弃 v1 支持。

编辑 3:在阅读 Twitter 的 Twitter Developers Discourse 论坛(哦,讽刺的是 Twitter 本身也使用 Discourse!)时,我的怀疑似乎得到了证实。根据他们固定的横幅(可在此处查看:Twitter Developers (twittercommunity.com)),新开发者无法访问 v1.1 API:

您是新用户,准备开始了吗?

我们鼓励您注册基本访问权限发出您的第一个请求到 API。

注册后,您的帐户中将有一个具有基本访问权限的项目,该项目将为您提供以下内容:

  • 1 个应用环境
  • 每月检索多达 500k 条推文的能力
  • 在过滤流端点中使用多达 5 个规则的能力
  • 访问大多数 Twitter API v2 端点
  • 您将无法访问标准 v1.1高级 v1.1企业端点
3 个赞

是的,这正是我在 songwritingsteps.com 上遇到的问题——它填入了“user1”而没有电子邮件地址。

如果您找到了解决方法,请告诉我!我为此抓耳挠腮了好几个小时 :confused:

1 个赞

不,不知道!我可以在本地机器上的虚拟机中启动一个论坛,看看是否能弄清楚是怎么回事。但目前还没有线索。我这是在瞎猜,但如上所述,我怀疑是它期望 V1 API 支持是罪魁祸首。正如我刚才分享的,新的开发者账户不再具备必要的 V1 遗留支持。

1 个赞

谢谢!@Hifihedgehog,你真是挖得很棒。我们正在研究最佳的前进方向,一旦有进展会及时更新。

感谢大家的耐心等待。

2 个赞

我认为你无法在本地机器上配置社交登录。你需要一个有效的 HTTPS 证书。你的本地机器上是否有有效的证书可以访问虚拟机?

1 个赞

其实,这并不难:我可以从我的 VPS 设置一个 SSH 隧道到我的本地机器,然后将其指向一个已经安装了 SSL 证书的 Web 服务器上的代理。 :wink:

3 个赞

好的,我想我们已经解开了这个谜团 :mag_right:

正如 @Hifihedgehog 指出的那样,新的 Twitter 开发者账户一开始使用的是“Essential”套餐,并且只能访问 v2 API 端点。我们内置的 Twitter 登录目前需要访问 v1.1 端点。谢天谢地,这不成问题!

在此图表 X API v2 - X 中有两件重要的事情需要注意:

您可以在“Elevated”套餐下免费访问 v1.1 API。您只需从您的开发者仪表板申请即可。我发现这个过程非常快速和简单。之后,Discourse Twitter 登录就能完美运行了 :tada:

我将更新 OP 以包含这一新要求。

10 个赞

你说得对!只花了几分钟就获得了批准。简单的修复总是令人愉快的!:smile:

5 个赞

8 个帖子被拆分到一个新主题:引用在名称与用户名匹配时中断

如果 Twitter 的 secret 或 key 被更新,是否会影响现有用户?如果会,是否有办法“修复”?我找到了这些关于 Facebook 登录更新的说明,请问这个脚本是正确的吗?

cd /var/discourse
./launcher enter app
rails c
UserAssociatedAccount.where(provider_name: "twitter").delete_all

设置 Twitter 登录后,我的 Twitter 链接不再被嵌入。我首先设置了 Twitter 消费者密钥,登录不符合预期。现在我使用的是“Elevated”计划,应该可以访问 v1.1 端点。

登录现在符合预期,但当我重建带有 Twitter 链接的帖子时,它们仍然是纯链接。

当我重建已嵌入推文的旧帖子时,嵌入会被删除。

有什么线索吗?

编辑:这似乎在最新的更新(2.9.0.beta5 - 0ae7b43018)中得到了修复。

1 个赞

我遇到了一个问题,图片显示为损坏。例如:

有什么想法吗……?一切都是最新的 :confused:

1 个赞