Twitterのデスクトップクライアントを作ろうと思っているのですが、
OAuth認証がうまくいかず、リクエストトークンが帰ってきません。
勉強のため、C#のtwitter用ライブラリは使いたくありません。
そこで、googleの OAuthBase.cs というものを見つけ、
ブログなどの情報を頼りにリクエストトークンを送るところまで書いたのですが、
リクエストトークンを投げても、
「WebExceptionはハンドルされませんでした。
リモートサーバーがエラーを返しました:(401)許可されていません」となり
401エラーが帰ってきます。
どうしたらよいでしょうか。
環境は windows10 で VisualStudio2015 を使っています。
ソースも一応貼っておきます、よろしくお願いします。
C#
1 private void start_butten_Click( object sender, EventArgs e ) 2 { 3 ServicePointManager.Expect100Continue = false; 4 OAuth.OAuthBase oauth = new OAuth.OAuthBase(); 5 Settings sett = new Settings(); 6 7 Uri twitter_url = new Uri(request_token_url); 8 string timestamp = oauth.GenerateTimeStamp(); //UNIX時間でタイムスタンプを取得 9 string nonce = GenerateNonce(); //ランダムな文字列を生成 10 11 12 //OAuthBace.cs でsignature生成 13 string normalizedUrl; 14 string normalizedRequestParameters; 15 16 // 17 string signature = oauth.GenerateSignature( twitter_url, //認証を投げる先 18 consumer_key, //コンシューマキー 19 consumer_secret, //コンシューマシークレットキー 20 "", 21 "", 22 "GET", 23 timestamp, //UNIX時間でタイムスタンプ 24 nonce, //8文字以上の毎回異なるランダムな英数字 25 OAuth.OAuthBase.SignatureTypes.HMACSHA1, 26 out normalizedUrl, 27 out normalizedRequestParameters); 28 29 //oauth_token、oauth_token_secretを取得 30 HttpWebRequest web_req = (HttpWebRequest)WebRequest.Create( 31 normalizedUrl + "?" + normalizedRequestParameters + 32 "&oauth_signature=" + signature); 33 web_req.Method = "GET"; 34 web_req.ProtocolVersion = HttpVersion.Version11; 35 //web_req.Credentials = CredentialCache.DefaultCredentials; // 36 //web_req.UseDefaultCredentials = false; // 37 web_req.KeepAlive = false; // 38 39 HttpWebResponse web_res = (HttpWebResponse)web_req.GetResponse(); 40 41 Stream stream = web_res.GetResponseStream(); 42 StreamReader streader = new StreamReader(stream, Encoding.GetEncoding("UTF8")); 43 string result = streader.ReadToEnd(); 44 45 streader.Close(); 46 stream.Close(); 47 Console.WriteLine(result); 48 textBox.Text = result; 49 50 }