2010-01-02 12 views
20

oauth_token_secret ist, wenn ich ein Zugriffstoken von Twitter bekommen ich etwas wie folgt aus:Was in Twitter OAuth

oauth_token=14410002-F5Bi8hMpQbXamM8MBBw8zw2LYIBL4FEBvxLZfaSwX&oauth_token_secret=K8QNvDcC2f9qtGU8tfa75exwLZ2Sc1jeHrThnk6Co&user_id=14410002&screen_name=blueonion 

Was ist der oauth_token_secret? Wird das verwendet, um geschützte Anforderungen zu signieren, oder wird der consumer_key noch verwendet?

+9

Ich fand die Spezifikation und lies sie pflichtbewusst. Ich habe den Teil oauth_token_secret teilweise vermisst, weil die Spezifikation ihn als "Token Secret" bezeichnet. Ihre Implikation, dass ich mich vor der Frage nicht angestrengt habe, ist unberechtigt und nicht angemessen. –

Antwort

15

Die kurze Antwort lautet: Die oauth_token und die oauth_token_secret bilden beide das Anfrage-Token, das zum Signieren von Anfragen verwendet wird.

Hier sind einige Ressourcen, die helfen könnten: (bes. Abschnitt 6)

Dies ist nicht der Consumer-Key. Der Consumer-Key dient nur zur Identifizierung des Consumers (= der Code, der Twitter aufruft), während das Request Token an den Benutzer gebunden ist. Das Anfrage-Token besteht dann aus einem öffentlichen und einem geheimen Teil, die beide zum Signieren der Anfrage verwendet werden, wie in der Spezifikation in Abschnitt 9 beschrieben.

Sie möchten aber wahrscheinlich eine der Bibliotheken verwenden und sich die Beispiele ansehen .

+0

Sicher genug, starrte mich direkt im Gesicht in Abschnitt 9.2. Ich habe Consumer Secret "gesehen" und direkt über das Token Secret gesprungen. Die OAuth-Spezifikation ist ziemlich einfach zu lesen, und ich habe es immer noch geschafft, darüber hinweg zu springen. Vielen Dank. Nebenbei entdeckte ich, dass Sie die Token_Secret nicht benötigen, um ein Zugriffs-Token in Twitter zu erhalten. Wahrscheinlich ein Bug, und das hat meine Verwirrung in erster Linie verursacht, vermute ich. –

9

Das ist eigentlich eine wirklich gute Frage, denn Twitter scheint den oauth 1.0-Standard bei dieser Anforderung gebrochen zu haben. Ich habe zufällig herausgefunden, dass wenn Sie das oauth_token_secret vom Signierschlüssel weglassen, d.

$signing_key = encode_rfc3986($consumer_secret).'&'; 

statt

$signing_key = encode_rfc3986($consumer_secret).'&'.encode_rfc3986($oauth_token_secret); 

wenn das Zugriffstoken anfordert, werden beide arbeiten genauso für twitter.

auf meiner website habe ich twitter oauth entwickelt, bevor ich eine andere oauth 1.0 service provider authentifizierung entwickelt habe und ich konnte nicht herausfinden, warum ein oauth_token_secret überhaupt benötigt wurde. als ich den gleichen code auf yahoo und linkedin ausprobierte, hatte ich einen scheußlichen schock, da der gleiche code, der für twitter funktionierte, bei den anderen serviceanbietern nicht funktionierte (dh ich benutzte das erste snippet oben, als ich das zweite snippet hätte verwenden sollen))

+0

Hey, getestet. Immer noch der Fall! ;) Hast du es irgendwann twitter gemeldet? – sebilasse