2010-06-02 12 views
11

Entschuldigung für die Störung mit Ihnen noch andere "Oauth Unterschrift und Token konnte nicht validiert werden" Fehler, aber ich kann einfach nicht herausfinden, was mit meiner Anfrage falsch ist.Warum gibt Twitter ein "Fehler bei der Validierung von Oauth-Signatur und Token?"

ich meine Unterschrift von diesem Zeichenfolge Konstruktion:

POST&http%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%3A%2F%2Fcraiga.id.au%2Ftwitter%2Fconnected%26oauth_consumer_key%3Dtm5...DOg%26oauth_nonce%3D8...22b%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1275453048%26oauth_version%3D1.0 

Daraus erstelle ich eine 28 Zeichen Unterschrift des folgenden PHP-Code verwendet:

base64_encode(hash_hmac('sha1', $raw, 'YUo...HIU' . '&', true)); 

diese Signatur verwendet, schicke ich die folgenden Anfrage:

POST http://api.twitter.com/oauth/request_token HTTP/1.1 
Host: api.twitter.com 
Pragma: no-cache 
Accept: */* 
Proxy-Connection: Keep-Alive 
Authorization: OAuth oauth_nonce="3D8...22b", oauth_callback="http%3A%2F%2Fcraiga.id.au%2Ftwitter%2Fconnected", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1275453048", oauth_consumer_key="tm5...DOg", oauth_signature="aYd...c6E%3D", oauth_version="1.0" 
Content-Length: 266 
Content-Type: application/x-www-form-urlencoded 

oauth_callback=http%3A%2F%2Fcraiga.id.au%2Ftwitter%2Fconnected&oauth_consumer_key=tm5...DOg&oauth_nonce=3D8...22b&oauth_signature_method=HMAC-SHA1&oauth_timestamp= 1275453048&oauth_version=1.0 

Ich bekomme die folgende Antwort von Twitter zu dieser Anfrage:

HTTP/1.1 401 Unauthorized 
Date: Wed, 02 Jun 2010 04:40:14 GMT 
Server: hi 
Status: 401 Unauthorized 
X-Transaction: 1275453614-48409-7443 
Last-Modified: Wed, 02 Jun 2010 04:40:14 GMT 
X-Runtime: 0.01083 
Content-Type: text/html; charset=utf-8 
Content-Length: 44 
Pragma: no-cache 
X-Revision: DEV 
Expires: Tue, 31 Mar 1981 05:00:00 GMT 
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0 
Set-Cookie: k=58.161.42.101.1275453614748615; path=/; expires=Wed, 09-Jun-10 04:40:14 GMT; domain=.twitter.com 
Set-Cookie: guest_id=12754536147577949; path=/; expires=Fri, 02 Jul 2010 04:40:14 GMT 
Set-Cookie: _twitter_sess=BAh7CToPY3JlYXRlZF9hdGwrCKaq9fYoAToRdHJhbnNfcHJvbXB0MDoHaWQi%250AJWU0ZDFhMGQzMWU0NTZjMzJiZWFkNWUzMTA4ZDRjOTg3IgpmbGFzaElDOidB%250AY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--f1e5c7649858a1694f24307504354846bbc1d16b; domain=.twitter.com; path=/ 
Vary: Accept-Encoding 
Connection: close 

Failed to validate oauth signature and token 

Wenn irgendjemand irgendein Licht werfen könnte, warum das vielleicht scheitern würde, würde ich gerne hören.

+0

Ein Twitter-Entwickler Anwalt hat [hingewiesen] (http://groups.google.com/group/twitter-development-talk/browse_thread/thread/92f6fbc209b3463d/fe5226c33ecfdc74? # fe5226c33ecfdc74) dass ich nicht 'POST'-die' oauth_ * '- Felder einfügen und sie in den 'Authorize'-Header aufnehmen soll, aber immer noch kein Glück mit' GET' oder leer 'POST'. –

+1

Siehe hier: http://stackoverflow.com/questions/3295466/ –

+3

Ich gebe zu, das ist nicht wirklich eine Antwort, aber ich habe dieses Problem mit dem PECL OAuth-Paket umgehen. [Rasmus Lerdorf schrieb ein Tutorial, wie man es benutzt.] (Http://toys.lerdorf.com/archives/50-Using-pecloauth-to-post-to-Twitter.html) –

Antwort

1

Sie verwenden die falsche Information, um die Signatur zu generieren. Sie sollten verwenden die ...

oauth_callback = http% 3A% 2F% 2Fcraiga.id.au% 2Ftwitter% 2Fconnected & oauth_consumer_key = tm5 ... Hund & oauth_nonce = 3D8 ... 22b & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1275453048 & oauth_version = 1,0

... die Signatur zu generieren (gelesen: nicht mit 'Post' und die Anfrage URI)

weitere Informationen ... siehe Twitter Developers: Creating a signature

1

Das Problem besteht Ursache Zeit von Ihnen Server nicht mit twitter Zeit 100% Lösung auf dem Server läuft (für Sync-Takt) synhronized

sudo ntpdate -s time.nist.gov 

und twitter Zeit überprüft mit

lynx --dump --head https://api.twitter.com/1/help/test.json 
1

I hatte kürzlich ähnliche Probleme beim Versuch, von Spout (Storm) eine Verbindung zu Twitter herzustellen; musste mein Ubuntu der Uhr synchronisieren:

sudo apt-get install ntp

Verwandte Themen