错误或规格更改(Twitter API 1.1)

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

错误

{"message":"Could not authenticate you","code":32} 

原因

如果发布数据(1.1 /状态/更新)包括…

  • *

我修补了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 } 

  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 } 

Twitter API v1.0不需要这个补丁。 只有v1.1需要这个补丁双重逃脱后体。 我认为我的补丁是不通用的,因为这种变化将使这个库不能用于任何其他oauth服务…

我的问题

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

我也遇到了同样的问题。 我尝试了2个不同的twitter库(node-twitter和ntwitter)。 两者都有1.1 api相同的问题。 你的修复似乎为我工作。 感谢那! 有趣的是,他们在第66行应用了相同的修复程序。不确定,但看起来这是node-oauth的一个bug。 我会开始在那里报告。 您的修复似乎没有打破我用Facebook做的基本的东西,所以我希望这是一个很好的迹象,这个修复不会影响其他库。

这是node-oauth问题或Twitter API问题(Twitter Spec chage或bug)?

来自@episod的引用:
“API v1.1(以及我们所有的API)对OAuth和HTTP的要求越来越严格。在HTTP规范中,一些字符需要在URL和POST主体中进行编码,包括parens和单引号。

我应该向谁报告这个问题?

这里的问题线程: https : //dev.twitter.com/discussions/12821