2013-02-03 8 views
6

Nel progetto di applicazione del mio nodo, ho migrato l'API di Twitter dalla v1.0 alla v1.1. E ho trovato alcuni errori nel mio file di registro.Cambiamento di bug o specifiche (dell'API di Twitter 1.1)

errore

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

Causa

Questo errore si verifica, se i dati sul post (a 1.1/status/aggiornamento) è compreso ...

  • !
  • '
  • (
  • )
  • *

Soluzione

Ho patch node_modules/oauth/lib/oauth.js di linfonodo oauth (utilizzato solo node- twitter) ...

da

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

a

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 non richiedono questa patch. Solo la versione 1.1 richiede che questa patch esegua il doppio escape di un corpo del post. Credo che la mia patch non è universale, perché questo cambiamento comporterà l'impossibilità di usare questa libreria per qualsiasi altro servizio OAuth ...

Le mie domande

  • Questo è problema del nodo-OAuth o Twitter API problema (chage o bug delle specifiche di Twitter)?
  • Chi devo segnalare questo problema?

risposta

1

Ho sperimentato anche questo stesso problema. Ho provato 2 diverse librerie di twitter (node-twitter e ntwitter). Entrambi hanno lo stesso problema con 1.1 API. La tua correzione sembra aver funzionato per me. Grazie per quello! È interessante che applichino questa stessa correzione alla riga 66. Non è sicuro, ma sembra che questo sia un bug con node-oauth. Vorrei iniziare segnalandolo lì. La tua correzione non sembra aver infranto le cose di base che sto facendo con Facebook, quindi spero che sia un buon segno che questa correzione non abbia effetto su altre librerie.

2

Questo è un problema nodo-oauth o problema API Twitter (Chage o bug di Twitter Specification)?

citazione da @episod:
"API v1.1 (e in generale tutti i nostri API) sono sempre più severi con OAuth e HTTP Nel specifiche HTTP, alcuni caratteri sono tenuti ad essere codificato in URL e. Corpi POST, inclusi parenti e citazioni singole. "

Chi devo segnalare questo problema?

ecco il filo problema: https://dev.twitter.com/discussions/12821

Problemi correlati