In diesem Artikel über die Twitter-API erfahren Sie, wie Sie mit OAuth-Authentifizierung über ein C # -Programm auf Twitter veröffentlichen . Den Quellcode zum Herunterladen finden Sie am Ende des Artikels, der aus einem Projekt für Visual Studio 2010 in C # unter .Net Framework 4 besteht.
Vor einigen Tagen veröffentlichte ich, wie man sich in der Twitter-API mit C # mithilfe der Nur-Anwendung-Methode authentifiziert , die uns eine etwas eingeschränkte Funktionalität bietet, da wir nur Daten „lesen“ können. Mit dieser Authentifizierungsmethode können wir nicht auf Twitter veröffentlichen. Daher verwenden wir dieses Mal die OAuth-Authentifizierungsmethode, mit der wir über die API auf Twitter veröffentlichen können .
Bevor Sie mit der Programmierung in C # beginnen, müssen Sie sich über einige frühere Konzepte im Klaren sein, die wir bereits in früheren Artikeln erwähnt haben und die sich mit der Erstellung einer Anwendung auf Twitter zur Verwendung der API und den verschiedenen Authentifizierungsmethoden in der Twitter-API befassen . Sobald wir diese vorherigen Konzepte geklärt haben, können wir mit dem nächsten Abschnitt fortfahren.
Richtige Konfiguration der Twitter-Anwendung
Zunächst müssen wir unsere Twitter-Anwendung so konfigurieren, dass sie über Lese- und Schreibberechtigungen verfügt, und uns daran erinnern, dass jedes Mal , wenn wir die Berechtigungen ändern, die Zugriffstoken durch Klicken auf die Schaltfläche „Meinen Zugriffstoken neu erstellen“ neu erstellt werden müssen .
Für unsere Bewerbung benötigen wir folgende Daten:
- Verbraucherschlüssel
- Verbrauchergeheimnis
- Zugriffstoken
- Zugriffs-Token-Geheimnis
Authentifiziere die API mit OAuth und poste auf Twitter
Hier befindet sich der Schlüssel zum Posten auf Twitter, und der Authentifizierungsprozess ist einfach, erfordert jedoch die Verwendung einiger Parameter, sodass er auf den ersten Blick verwirrend sein kann. Sobald wir uns mit ihnen vertraut gemacht haben, ist er jedoch relativ einfach. Wir werden alle Parameter einzeln analysieren, um unsere Anfrage an die Twitter-API zu authentifizieren.
Zum besseren Verständnis dieses Textes lohnt es sich, die Artikel des HTTP-Protokolls für Entwickler und den zweiten Teil des HTTP-Protokolls für Entwickler zu lesen.
Analyse des HTTP-Headers der OAuth-Authentifizierung auf Twitter
Bei der OAuth-Authentifizierung muss lediglich ein HTTP-Header mit einer Reihe von Parametern gesendet werden. Dieser HTTP-Header ist vom Authorization
mit einer relativ langen Reihe von OAuth-Parametern. Um sich ein Bild zu machen, sehen Sie sich am besten ein Beispiel für den Authentifizierungsheader an und analysieren Sie anschließend die einzelnen Elemente eingehend:
Authorization: OAuth oauth_consumer_key="TgFJXZXthKo1PaPa2nojVw", oauth_nonce="fd499de05a62321f46992debde57ccb5", oauth_signature="B2mjoFqrH4ErcVvb4PTJ6WTdwdg%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1388241123", oauth_token="2209782272-KRjensh0cvhrndGPza0rnAsSAh7PNDYS7lQ6xyo", oauth_version="1.0"
Dieser Header enthält bereits die Parameter oauth_consumer_key
(es ist der Consumer-Schlüssel unserer Anwendung) und oauth_token
(es ist das Zugriffstoken der Twitter-Anwendung), daher werde ich nicht darüber sprechen, da wir sie bereits zur Verwendung bereit haben.
Oauth_nonce-Parameter
Es ist ein Parameter mit alphanumerischen Zeichen und einer Länge von 32 Zeichen . Twitter empfahl anfangs, eine Base64-Codierung zu verwenden, um oauth_nonce
zu generieren, aber da manchmal die mit base64 codierten Zeichen NICHT alphanumerisch “/” und “=” gelöscht werden mussten, ist die Verwendung eines MD5-Hashs wesentlich praktischer Dieser Parameter entspricht unseren Anforderungen, da er immer 32 Zeichen lang ist und IMMER alphanumerische Zeichen enthält.
In dem Programm in C # wird dieser Parameter mit der Funktion CreateNonce()
erstellt, die CreateNonce()
einen MD5-Hash aus dem genauen aktuellen Datum und der genauen Uhrzeit generiert. CreateNonce()
stellen wir sicher, dass er immer eindeutig ist.
Parameter Oauth_signature_method
Zu diesem Parameter gibt es wenig zu sagen, da es sich immer um HMAC-SHA1
handelt, die Codierungsmethode der Firma, die die Twitter-API verwendet. HMAC-SHA1
ist eine Datencodierungsmethode, mehr nicht.
Parameter Oauth_timestamp
Dieser Parameter gibt Twitter an, wann die Authentifizierungsanforderung erstellt wurde. Twitter muss einen Wert aufweisen, der nahe an dem Datum liegt, an dem die Anfrage gestellt wurde, da andernfalls diese Anfrage verworfen wird.
Um diesen Parameter zu erstellen, wird die Funktion CreateTimestamp()
die die Gesamtzahl der Sekunden CreateTimestamp()
die seit dem UNIX-Ursprungsdatum (1. Januar 1970) bis heute vergangen sind. Diese Art der Zeitmessung wird als UNIX-Zeit oder POSIX-Zeit bezeichnet .
Parameter Oauth_version
Dieser Parameter ist bei jeder Anfrage an die Twitter-API immer 1.0
.
Andere verwendete Parameter: status, request_type und resource_url
- status : ist exklusiv für dieses Beispiel. Denken Sie daran, dass ein neuer Tweet mithilfe der API und der OAuth-Authentifizierung veröffentlicht werden soll. Der status-Parameter ist nichts anderes als der Inhalt des Tweets, den wir veröffentlichen möchten.
- request_type : Dies ist nur der Verbtyp, der in unserer HTTP-Anforderung verwendet wird. In diesem Beispiel handelt es sich um den Typ
POST
. - resource_url : Dies ist die URL, die unsere Anfrage an die API interpretiert. In unserem Fall lautet die URL für die Veröffentlichung eines Tweets
https://api.twitter.com/1.1/statuses/update.json
Parameter Oauth_signature
Ich habe es zuletzt gestoppt, weil es das komplexeste ist und um es generieren zu können, müssen wir mehrere der oben genannten Parameter verwenden. Dieser Parameter ist nichts anderes als eine Signatur, die Twitter über die Integrität der Nachricht informiert (überprüft, ob sie zum Zeitpunkt des Versands geändert wurde) und gleichzeitig überprüft, ob die Anwendung über die Berechtigungen zur Interaktion mit dem Twitter-Konto des Benutzers verfügt . Die Funktion CreateOAuthSignature()
wird im CreateOAuthSignature()
. Diese Funktion codiert mit dem HMAC-SHA1
Algorithmus eine Textzeichenfolge mit den Informationen unserer Anfrage (wir nennen sie baseString) .
Der baseString wird durch Verketten der folgenden Parameter mit dem Zeichen “&” generiert:
-
oauth_consumer_key
-
oauth_nonce
-
oauth_signature_method
-
oauth_timestamp
-
oauth_token
-
oauth_version
-
status
-
request_type
-
resource_url
Sobald wir unseren baseString generiert haben, codieren wir ihn mit dem HMAC-SHA1
Algorithmus unter Verwendung der Parameter oauth_consumer_secret
und oauth_token_secret
, die durch das Zeichen “&” als HMAC-Schlüssel verkettet sind. oauth_token_secret
führt zu einer mit base64 codierten oauth_signature
, die unser Parameter oauth_signature
ist verwenden
HTTP-Anforderung mit OAuth bei der Twitter-API authentifizieren lassen
Wir haben bereits alle notwendigen Parameter, um unseren HTTP-Authentifizierungsheader zu bilden, und fahren mit der HTTP-Anforderung mit der POST
Methode fort.
In diesem Abschnitt spricht der Code in C # für sich, da wir eine HTTP-Anfrage mit Standard-POST stellen. Das einzig Bemerkenswerte ist, Sie zu warnen, dass die Sonderzeichen (nicht alphanumerisch), die unser Tweet enthalten kann, mit der Funktion URLEncode()
codiert werden müssen, da die Funktion, die .Net Framework für diese Aufgabe Uri.EscapeDataString()
keine Zeichen wie Klammern und gibt Fehler.
Soweit mit der Theorie, wie Sie das Projekt in C # mit dem Code gebrauchsfertig herunterladen können.
Ich hoffe, Ihnen hat dieses neue Tutorial gefallen, wie Sie mit der API- und OAuth-Authentifizierung unter C # auf Twitter veröffentlichen können .