2017-06-14 54 views
0

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

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

忽略丑陋的用户界面第二个问题是,当用户点击提交链接Disqus放置和错误页面标题为'CSRF验证失败(403) - DISQUS'。我猜这可能是因为OAuth2调用是从服务器进行的,并且提交来自客户端。如果我将OAUTH2 url直接复制到浏览器中,一切正常。但我不想在客户端公开我的API密钥和生成的代码,因为这看起来像是一种安全风险。

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

我也考虑过构建自己的对话框来提示输入用户名/密码,将它们发送回服务器并让服务器“假”提交回Disqus。但这不是一个可维护的解决方案,因为Disqus可能会随时更改预期的字段。这是丑陋的罪过。

任何人有任何建议吗?我没有发布任何代码,因为我不相信这是一个编码问题(代码有点复杂)。但如果有人认为它会帮助你,我很乐意发布它。而且,是的,我知道不会发布代码违反了StackOverflow约定。但是我正在抓住机会,因为Disqus的支持是不存在的,我不知道还有哪些地方可以提供。

回答

0

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

接下来的问题是由getAuthorizationUrl返回的URL不好。它的形式是'nullhttps:...'。不知道'null'是从哪里来的,但是剥离它可以解决这个问题。

为了让任何人都能够更轻松地完成这项任务,有一个闪亮的Disqus NPM新版本,其中包含的OAuth身份验证方法为https://www.npmjs.com/package/disqus