Heim >Backend-Entwicklung >C++ >Wie kann ich mich mit der Twitter API v1.1 OAuth authentifizieren und die Zeitleiste eines Benutzers mithilfe von HttpWebRequest abrufen?

Wie kann ich mich mit der Twitter API v1.1 OAuth authentifizieren und die Zeitleiste eines Benutzers mithilfe von HttpWebRequest abrufen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-12 18:11:45930Durchsuche

How can I Authenticate with Twitter API v1.1 OAuth and Retrieve a User's Timeline using HttpWebRequest?

Verwenden von HttpWebRequest für den Zugriff auf die Twitter-API v1.1: OAuth-Authentifizierung und Timeline-Abruf

Diese Anleitung beschreibt, wie Sie sich mit der Twitter-API v1.1 mithilfe von OAuth authentifizieren und anschließend die Zeitleiste eines Benutzers über HttpWebRequest abrufen. Die alte v1-API ist veraltet; Diese Methode nutzt das aktualisierte Protokoll.

OAuth-Authentifizierungsschritte:

  1. Besorgen Sie sich Ihren OAuth-Verbraucherschlüssel und Ihr Geheimnis vom Twitter-Entwicklerportal.
  2. Erstellen Sie eine Authentifizierungsanforderung für https://api.twitter.com/oauth2/token. Der Anforderungsheader muss Ihren Verbraucherschlüssel und Ihr Geheimnis unter Verwendung einer Base64-codierten Zeichenfolge enthalten.
  3. Senden Sie eine POST-Anfrage mit dem Body-Parameter grant_type=client_credentials.
  4. Parsen Sie die JSON-Antwort, um das Zugriffstoken und den Tokentyp zu extrahieren.

Abrufen der Zeitleiste des Benutzers:

  1. Formulieren Sie eine Anfrage an https://api.twitter.com/1.1/statuses/user_timeline.json. Fügen Sie erforderliche Abfrageparameter wie screen_name, include_rts, exclude_replies und count hinzu.
  2. Integrieren Sie das Zugriffstoken (das Sie im Authentifizierungsschritt erhalten haben) in den Autorisierungsheader.
  3. Geben Sie eine GET-Anfrage aus und analysieren Sie die JSON-Antwort, um auf die Zeitleistendaten zuzugreifen.

Codebeispiel (C#):

<code class="language-csharp">//  Assume these variables are pre-populated:
//  oAuthConsumerKey: Your OAuth consumer key
//  oAuthConsumerSecret: Your OAuth consumer secret
//  screenname: The target Twitter username

// Authentication
string authHeaderFormat = "Basic {0}";
string authHeader = string.Format(authHeaderFormat,
    Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(oAuthConsumerKey) + ":" +
    Uri.EscapeDataString(oAuthConsumerSecret))));
string postBody = "grant_type=client_credentials";
HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create("https://api.twitter.com/oauth2/token");
authRequest.Headers.Add("Authorization", authHeader);
authRequest.Method = "POST";
authRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
authRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

using (Stream stream = authRequest.GetRequestStream())
{
    byte[] content = ASCIIEncoding.ASCII.GetBytes(postBody);
    stream.Write(content, 0, content.Length);
}

authRequest.Headers.Add("Accept-Encoding", "gzip");
HttpWebResponse authResponse = (HttpWebResponse)authRequest.GetResponse();

// Deserialize authentication response
TwitterAuthResponse authResponseObject;
using (authResponse)
{
    using (StreamReader reader = new StreamReader(authResponse.GetResponseStream()))
    {
        string json = reader.ReadToEnd();
        authResponseObject = JsonConvert.DeserializeObject<TwitterAuthResponse>(json);
    }
}

// Timeline Request
string timelineFormat = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name={0}&include_rts=1&exclude_replies=1&count=5";
string timelineUrl = string.Format(timelineFormat, screenname);
HttpWebRequest timelineRequest = (HttpWebRequest)WebRequest.Create(timelineUrl);
string timelineHeaderFormat = "{0} {1}";
timelineRequest.Headers.Add("Authorization", string.Format(timelineHeaderFormat, authResponseObject.token_type, authResponseObject.access_token));
timelineRequest.Method = "GET";
HttpWebResponse timelineResponse = (HttpWebResponse)timelineRequest.GetResponse();


// Parse timeline response
string timelineJson;
using (timelineResponse)
{
    using (StreamReader reader = new StreamReader(timelineResponse.GetResponseStream()))
    {
        timelineJson = reader.ReadToEnd();
    }
}

// Process the timelineJson data.</code>

Denken Sie daran, Platzhalter durch Ihre tatsächlichen Tasten und Ihren Bildschirmnamen zu ersetzen. Für den Produktionseinsatz sollten Fehlerbehandlung und Ausnahmeverwaltung hinzugefügt werden. Dieses verbesserte Beispiel verdeutlicht die Variablenbenennung und verbessert die Lesbarkeit. Sie müssen das Newtonsoft.Json NuGet-Paket für JsonConvert installiert haben.

Das obige ist der detaillierte Inhalt vonWie kann ich mich mit der Twitter API v1.1 OAuth authentifizieren und die Zeitleiste eines Benutzers mithilfe von HttpWebRequest abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn