Panduan ini memperincikan cara untuk mengesahkan dengan Twitter API v1.1 menggunakan OAuth dan seterusnya mendapatkan semula garis masa pengguna melalui HttpWebRequest. API v1 warisan sudah lapuk; kaedah ini menggunakan protokol yang dikemas kini.
Langkah Pengesahan OAuth:
https://api.twitter.com/oauth2/token
. Pengepala permintaan mesti menyertakan kunci dan rahsia pengguna anda menggunakan rentetan berkod Base64.grant_type=client_credentials
.Mendapatkan semula Garis Masa Pengguna:
https://api.twitter.com/1.1/statuses/user_timeline.json
. Sertakan parameter pertanyaan yang diperlukan seperti screen_name
, include_rts
, exclude_replies
dan count
.Contoh Kod (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>
Ingat untuk menggantikan ruang letak dengan kunci dan nama skrin anda yang sebenar. Pengendalian ralat dan pengurusan pengecualian perlu ditambah untuk kegunaan pengeluaran. Contoh yang dipertingkatkan ini menjelaskan penamaan pembolehubah dan meningkatkan kebolehbacaan. Anda perlu memasang Newtonsoft.Json
pakej NuGet untuk JsonConvert
.
Atas ialah kandungan terperinci Bagaimanakah saya boleh Mengesahkan dengan Twitter API v1.1 OAuth dan Dapatkan Garis Masa Pengguna menggunakan HttpWebRequest?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!