Bug或Spec更改(Twitter API 1.1)

Mit*_*oto 6 twitter oauth node.js

在我的节点应用程序项目中,我已将Twitter API从v1.0迁移到v1.1.我在日志文件中发现了一些错误.

错误

{"message":"Could not authenticate you","code":32}
Run Code Online (Sandbox Code Playgroud)

原因

如果发布数据(到1.1/status/update)包括......,则会发生此错误

  • !
  • "
  • (
  • )
  • *

我修补了node-oauth的node_modules/oauth/lib/oauth.js(仅使用了node-twitter)...

327   if( (method == "POST" || method == "PUT")  && ( post_body == null && extra_params != null) ) {
328     post_body= querystring.stringify(extra_params);
329   }
Run Code Online (Sandbox Code Playgroud)

 327   if( (method == "POST" || method == "PUT")  && ( post_body == null && extra_params != null) ) {
 328     post_body= querystring.stringify(extra_params);
+331     post_body= post_body.replace(/\!/g, "%21")
+332                         .replace(/\'/g, "%27")
+333                         .replace(/\(/g, "%28")
+334                         .replace(/\)/g, "%29")
+335                         .replace(/\*/g, "%2A");
 336   }
Run Code Online (Sandbox Code Playgroud)

Twitter API v1.0不需要此补丁.只有v1.1要求此补丁双重转义帖子正文.我认为我的补丁不是通用的,因为这种改变将使得无法将此库用于任何其他oauth服务......

我的问题

  • 这是node-oauth问题或Twitter API问题(Twitter Spec chage或bug)?
  • 我应该向谁报告此问题?

小智 1

我也经历过同样的问题。我尝试了 2 个不同的 twitter 库(node-twitter 和 ntwitter)。两者在 1.1 api 上都有同样的问题。你的修复似乎对我有用。感谢那!有趣的是,他们在第 66 行应用了相同的修复。不确定,但看起来这是 node-oauth 的一个错误。我首先会在那里报告。你的修复似乎并没有破坏我在 facebook 上所做的基本工作,所以我希望这是一个好兆头,表明此修复不会影响其他库。