Effettuare chiamate autenticate su Twitter può essere un problema.
Assicurarsi che i parametri nella stringa di base della firma siano ordinati alfabeticamente.
Prendete questo:
oauth_consumer_key={consumerkey}&oauth_nonce={nonce}&oauth_signature_method=HMAC-SHA1&oauth_timestamp={timestamp}&oauth_token={token}&oauth_version=1.0&status={tweet text}
compilare i valori, la codifica in Base64, e poi mettere insieme in questo modo:
POST&{base64 encoded url}&{base64 encoded base string}
questa sarà la stringa è necessario accedere (senza le parentesi). (L'URL in questo caso sarà https://api.twitter.com/1.1/statuses/update.json)
la firma chiave deve essere costruita in questo modo:
{consumer secret}&{token secret}
La firma è un hash HMACSHA1, che viene poi codificato in base64.
allora avete bisogno di mettere questo nella intestazione di autorizzazione:
OAuth oauth_consumer_key="{consumer key}",oauth_nonce="{nonce}",oauth_signature="{signature}",oauth_signature_method="HMAC-SHA1",oauth_timestamp="{timestamp}",oauth_token="{token}",oauth_version="1.0"
E finalmente mettere status=your tweet text
come i dati pubblicati nella vostra richiesta.
Spero che questo aiuti.
Innanzitutto, prova alcune richieste GET con le tue chiavi (qualcosa come status/home_timeline che richiede l'autenticazione). Funziona? – Shcheklein
Assicurati che l'orologio del tuo server sia sincronizzato con Twitter o con un altro server orario ben noto. Se mancano più di 15 minuti, Twitter dirà la firma sbagliata e fallirà. –
stavo sperimentando lo stesso problema (c/liboauth/maemo5) - tutto scorreva bene fino a ottenere il token di accesso (con il nome dello schermo, ecc) - ma quando ho fatto una chiamata di riposo (anche solo una lettura) ho ottenuto lo stesso errore ... leggendo il commento di Eran ho notato che l'orologio del vm in cui stavo lavorando era un'ora fuori! e ora funziona :) così, Grazie Eran - il tuo commento dovrebbe essere una risposta, +1. – fusi