このガイドでは、OAuth を使用して Twitter API v1.1 で認証し、その後 HttpWebRequest 経由でユーザーのタイムラインを取得する方法について詳しく説明します。 レガシー v1 API は廃止されました。このメソッドは、更新されたプロトコルを利用します。
OAuth 認証手順:
https://api.twitter.com/oauth2/token
を対象とした認証リクエストを作成します。 リクエスト ヘッダーには、Base64 でエンコードされた文字列を使用したコンシューマ キーとシークレットを含める必要があります。grant_type=client_credentials
を使用して POST リクエストを送信します。ユーザーのタイムラインの取得:
https://api.twitter.com/1.1/statuses/user_timeline.json
へのリクエストを作成します。 screen_name
、include_rts
、exclude_replies
、count
などの必要なクエリ パラメーターを含めます。コード例 (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>
プレースホルダーを実際のキーとスクリーン名に置き換えることを忘れないでください。 本番環境で使用するには、エラー処理と例外管理を追加する必要があります。 この改良された例では、変数の命名が明確になり、読みやすさが向上しています。 Newtonsoft.Json
用の JsonConvert
NuGet パッケージがインストールされている必要があります。
以上がTwitter API v1.1 OAuth で認証し、HttpWebRequest を使用してユーザーのタイムラインを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。