Maison > développement back-end > C++ > Comment puis-je m'authentifier avec l'API Twitter v1.1 OAuth et récupérer la chronologie d'un utilisateur à l'aide de HttpWebRequest ?

Comment puis-je m'authentifier avec l'API Twitter v1.1 OAuth et récupérer la chronologie d'un utilisateur à l'aide de HttpWebRequest ?

Patricia Arquette
Libérer: 2025-01-12 18:11:45
original
929 Les gens l'ont consulté

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

Utilisation de HttpWebRequest pour accéder à l'API Twitter v1.1 : authentification OAuth et récupération de la chronologie

Ce guide explique comment s'authentifier auprès de l'API Twitter v1.1 à l'aide d'OAuth et récupérer ensuite la chronologie d'un utilisateur via HttpWebRequest. L'ancienne API v1 est obsolète ; cette méthode utilise le protocole mis à jour.

Étapes d'authentification OAuth :

  1. Obtenez votre clé de consommateur et votre secret OAuth sur le portail des développeurs Twitter.
  2. Construisez une demande d'authentification ciblée sur https://api.twitter.com/oauth2/token. L'en-tête de la demande doit inclure votre clé de consommateur et votre secret à l'aide d'une chaîne codée en Base64.
  3. Envoyer une requête POST avec le paramètre body grant_type=client_credentials.
  4. Analysez la réponse JSON pour extraire le jeton d'accès et le type de jeton.

Récupération de la chronologie de l'utilisateur :

  1. Formuler une demande à https://api.twitter.com/1.1/statuses/user_timeline.json. Incluez les paramètres de requête nécessaires tels que screen_name, include_rts, exclude_replies et count.
  2. Incorporez le jeton d'accès (obtenu lors de l'étape d'authentification) dans l'en-tête d'autorisation.
  3. Émettez une requête GET et analysez la réponse JSON pour accéder aux données de la chronologie.

Exemple de code (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>
Copier après la connexion

N'oubliez pas de remplacer les espaces réservés par vos clés et votre nom d'écran réels. La gestion des erreurs et la gestion des exceptions doivent être ajoutées pour une utilisation en production. Cet exemple amélioré clarifie la dénomination des variables et améliore la lisibilité. Vous devrez avoir le Newtonsoft.Json package NuGet installé pour JsonConvert.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal