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?