2013-02-03 59 views
6

在我的節點應用程序項目中,我將Twitter API從v1.0遷移到v1.1。我在日誌文件中發現了一些錯誤。錯誤或規範更改(Twitter API 1.1)

錯誤

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

原因

出現此錯誤,如果後期的數據(1.1 /狀態/更新)被包括...

  • '
  • *

我已平息node_modules/OAuth的節點的OAuth(僅用於節點 - 的/ LIB/oauth.js twitter)...

from

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 1.0不需要這個補丁。只有v1.1需要這個補丁雙重逃脫後身。我覺得我的補丁並不普遍,因爲這種變化將使其無法使用這個庫用於任何其他的OAuth服務...

我的問題

  • 這是節點的OAuth問題或Twitter API問題(Twitter Spec chage或bug)?
  • 我應該向誰報告此問題?

回答

1

我也遇到了同樣的問題。我嘗試了2個不同的twitter庫(node-twitter和ntwitter)。兩者在1.1 api上都有相同的問題。你的修復似乎對我有效。感謝那!有趣的是,他們在第66行應用了相同的修復程序。不確定,但看起來像這是node-oauth的錯誤。我會從那裏報告。你的修復似乎沒有打破我用Facebook做的基本工作,所以我希望這是一個很好的跡象,表明這個修復不會影響其他庫。

2

這是node-oauth問題或Twitter API問題(Twitter Spec chage或bug)?從@episod

報價:
「API V1.1(和一般的所有API的)越來越通過OAuth和HTTP嚴格在HTTP規範,需要一些字符在URL中編碼和。郵政機構,包括parens和單引號。「

我應該向誰報告此問題?

這裏的問題線索:https://dev.twitter.com/discussions/12821