Disqus OAuth2流的问题

时间:2017-06-14 01:24:57

标签: javascript meteor oauth disqus

由于在Disqus disqus论坛上发帖似乎是浪费时间,也许这里有人可以提供帮助。

我尝试使用OAuth2流程将Disqus用户连接到我应用的帐户系统,以便我可以监控他们的活动(帖子/评论/等)。我正在使用Meteor为我的应用程序。我从我的服务器代码调用OAuth2授权端点,并将生成的HTML传回客户端进行渲染。一切正常。但我在客户端看到了2个问题。首先,从Disqus返回的HTML代码似乎是在整页中设计的,用户名/密码字段扩展到整个窗口。我期待一个对话框/模态弹出窗口,就像Disqus登录论坛时提供的那样。我尝试在一个Boostrap3模式窗口中包装HTML,除了用户名和密码字段在对话框的右侧延伸之外,它主要起作用。

忽略丑陋的用户界面第二个问题是,当用户点击提交链接时,我们点击了提示和错误页面标题为“CSRF验证失败(403) - DISQUS'”。我猜测这可能是因为OAuth2调用是从服务器发出的,而提交来自客户端。如果我将OAUTH2 url直接复制到浏览器中,一切正常。但我不想在客户端公开我的API密钥和结果代码,因为这似乎是一种安全风险。

我真正想做的就是验证用户是否正在尝试将自己的帐户连接到我的应用(而不是其他用户)。我没有使用他们的帐户发帖,因此我不需要访问令牌(我只是调用用户/详细信息,只需要获取API密钥)。所以我考虑过为我的应用创建一个论坛,并使用登录端点来验证用户名/密码组合。但是这个对话框并没有解释我要求的范围。

我还考虑建立自己的对话框以提示用户名/密码,将这些用户名/密码发送回服务器并让服务器"假的"提交回Disqus。但这不是一个可维护的解决方案,因为Disqus可能随时改变预期的字段。它就像罪一样丑陋。

有人有什么建议吗?我没有发布任何代码,因为我不相信这是一个编码问题(并且代码有点复杂)。但如果有人认为它会帮助你帮助我,我会乐意发布它。而且,是的,我知道不发布代码违反了StackOverflow惯例。但我有机会认为,由于Disqus支持是不存在的,所以这些权力将允许这个帖子。我不知道还有什么地方可以联系到。

1 个答案:

答案 0 :(得分:0)

基本问题是我正在使用启用转发的“请求”,以便获取Disqus身份验证文本而不是获取Disqus URL。您需要在窗口中呈现身份验证URL,而不是内容。这解决了CSRF问题。

下一个问题是getAuthorizationUrl返回的网址不好。它的形式为'nullhttps:...'。不知道'null'来自哪里,但剥离它解决了这个问题。

为了让想要执行此操作的人们更轻松,有一个全新的Disqus NPM版本,其中包含https://www.npmjs.com/package/disqus的OAuth身份验证方法。