坦白说,与 2020 年 12 月的那个问题不同,这是 Discourse 团队的另一个问题。那个不同问题的最后一篇帖子就在 @dnfoz 在此的第一个帖子之前,而且那已经是 1 年多以前了。@dnfoz 的问题是 8 天前刚发布的,而不是几个月前。问题在于 Twitter 正在不断更改其 API,因为他们——坦白说——不知道他们的平台目标是什么。这就是为什么一年前的问题与大约一周前的问题会完全不同,尤其是对于 Twitter 而言。如果这是几个月前的问题,除了通过潜移默化和读心术之外,你或其他人必须发帖说明,他们才能知道。
在注册时,它似乎不起作用,没有自动填充电子邮件字段?是我做错了什么吗?它适用于我的谷歌注册,它会自动填充电子邮件。
请看 @dnfoz 的例子。这是因为每个 SSO 提供商都不同,这意味着 Google 的做法与 Twitter 的做法略有不同,而 Twitter 是最糟糕的(如果不是最糟糕的话)。Twitter 的 API 是一个不断变化的目标,因为 Twitter 不知道自己在做什么,而且 Twitter 对围绕其 API 进行开发的开发者没有任何礼貌。所以,说实话,除非我们 Discourse 管理员或 Discourse 团队不断地为 Twitter 端的变化而密切关注这个插件,否则它会像这样不断中断。
谢谢。是的,我认为我不应该再浪费时间学习和摆弄 Twitter API 了,正如你所说,它们随时可能发生变化。我相信我的用户会适应的!
这并不意味着 Discourse 团队还没有在修复,他们确实在努力,可能只需要更新插件就可以让它在管理员端再次工作。问题在于,这是 Twitter 长期存在的一个问题,因为他们是一家管理不善的公司。我仍然会保留我的 Twitter SSO 插件作为一种选择,但 Twitter 绝对不像其他 SSO 那样是一个安全可靠的选择。
如果我们仍然遇到这些问题,能否尝试在 try.discourse.org 上重现相同的问题?我可以在那里使用我的 Twitter 账户顺利登录。
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.
与此处父帖子相比,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:
您是新用户,准备开始了吗?
注册后,您的帐户中将有一个具有基本访问权限的项目,该项目将为您提供以下内容:
是的,这正是我在 songwritingsteps.com 上遇到的问题——它填入了“user1”而没有电子邮件地址。
如果您找到了解决方法,请告诉我!我为此抓耳挠腮了好几个小时 ![]()
不,不知道!我可以在本地机器上的虚拟机中启动一个论坛,看看是否能弄清楚是怎么回事。但目前还没有线索。我这是在瞎猜,但如上所述,我怀疑是它期望 V1 API 支持是罪魁祸首。正如我刚才分享的,新的开发者账户不再具备必要的 V1 遗留支持。
谢谢!@Hifihedgehog,你真是挖得很棒。我们正在研究最佳的前进方向,一旦有进展会及时更新。
感谢大家的耐心等待。
我认为你无法在本地机器上配置社交登录。你需要一个有效的 HTTPS 证书。你的本地机器上是否有有效的证书可以访问虚拟机?
其实,这并不难:我可以从我的 VPS 设置一个 SSH 隧道到我的本地机器,然后将其指向一个已经安装了 SSL 证书的 Web 服务器上的代理。 ![]()
好的,我想我们已经解开了这个谜团 ![]()
正如 @Hifihedgehog 指出的那样,新的 Twitter 开发者账户一开始使用的是“Essential”套餐,并且只能访问 v2 API 端点。我们内置的 Twitter 登录目前需要访问 v1.1 端点。谢天谢地,这不成问题!
在此图表 X API v2 - X 中有两件重要的事情需要注意:
您可以在“Elevated”套餐下免费访问 v1.1 API。您只需从您的开发者仪表板申请即可。我发现这个过程非常快速和简单。之后,Discourse Twitter 登录就能完美运行了 ![]()
我将更新 OP 以包含这一新要求。
你说得对!只花了几分钟就获得了批准。简单的修复总是令人愉快的!![]()
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)中得到了修复。




