使用c#更新twitter状态 [英] Update twitter status with c#

查看:78
本文介绍了使用c#更新twitter状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

var oauth_token =;

var oauth_token_secret =;



var oauth_consumer_key =;

var oauth_consumer_secret =;



// requestToken = OAuthUtility.GetRequestToken(oauth_consumer_key,oauth_consumer_secret,http://127.0.0.1/);

// var oauth_token = requestToken.Token;

// var oauth_token_secret = requestToken.TokenSecret;



/ / oauth实现细节

var oauth_version =1.0;

var oauth_signature_method =HMAC-SHA1;



//唯一请求详细信息

var oauth_nonce = Convert.ToBase64String(

new ASCIIEncoding()。GetBytes(DateTime.Now.Ticks.ToString()));

var timeSpan = DateTime.UtcNow

- 新的DateTime(1970,1,1,0,0, 0,0,DateTimeKind.Utc);

var oauth_timestamp = Convert.ToInt64(timeSpan.TotalSeconds).ToString();



/ / message api details

var status =如果这样可以通过REST API更新状态;

var resource_url =https://api.twitter.com/1.1/ statuses / user_timeline.json;

var screen_name =username;

var count =1;

//创建oauth签名

var baseFormat =count = {7}&oauth_consumer_key = {0}&oauth_nonce = {1}&oauth_signature_method = {2}+&oauth_timestamp = {3}&oauth_token = {4}&oauth_version = {5} &screen_name = {6};

var baseString = string.Format(baseFormat,oauth_consumer_key,oauth_nonce,oauth_signature_method,oauth_timestamp,oauth_token,oauth_version,Uri.EscapeDataString(screen_name),Uri.EscapeDataString(count)) ;



baseString = string.Concat(GET&, Uri.EscapeDataString(resource_url),&,Uri.EscapeDataString(baseString));



var compositeKey = string.Concat(Uri.EscapeDataString(oauth_consumer_secret),

&,Uri.EscapeDataString(oauth_token_secret));



string oauth_signature;

使用(HMACSHA1 hasher = new HMACSHA1(ASCIIEncoding.ASCII.GetBytes(compositeKey)))

{

oauth_signature = Convert.ToBase64String(

hasher.ComputeHash(ASCIIEncoding) .ASCII.GetBytes(baseString)));

}



//创建请求标题

var headerFormat =OAuth oauth_nonce = \{0} \,oauth_signature_method = \{1} \,+

oauth_timestamp = \{2} \ ,oauth_consumer_key = \{3} \,+

oauth_token = \{4} \,oauth_signature = \{5} \,+

oauth_version = \{6} \; < br $>


var authHeader = string.Format(headerFormat,

Uri.EscapeDataString(oauth_nonce),

Uri.EscapeDataString (oauth_signature_method),

Uri.EscapeDataString(oauth_timestamp),

Uri.EscapeDataString(oauth_consumer_key),

Uri.EscapeDataString(oauth_token),

Uri.EscapeDataString(oauth_signature),

Uri.EscapeDataString(oauth_version)

);





//提出请求



ServicePoint Manager.Expect100Continue = false;



var postBody =screen_name =+ Uri.EscapeDataString(screen_name); //

var postbody2 = count =+ Uri.EscapeDataString(count);

resource_url + =? + postBody +&+ postbody2;

HttpWebRequest request =(HttpWebRequest)WebRequest.Create(resource_url);

request.Headers.Add(Authorization,authHeader) ;

request.Method =GET;

request.ContentType =application / x-www-form-urlencoded;

< br $>


WebResponse response = request.GetResponse();

string responseData = new StreamReader(response.GetResponseStream())。ReadToEnd(); < br $> b $ b

var resource_url1 =https://api.twitter.com/1.1/statuses/update.json;

resource_url1 + = ?status =+ textbox.Text;



HttpWebRequest request1 =(HttpWebRequest)WebRequest.Create(resource_url1);

request1.Headers。添加(授权,authHeader);

request1.Method =POST;

request1.ContentType =applic ation / x-www-form-urlencoded;



WebResponse response1 = request1.GetResponse();

string responseData1 = new StreamReader( response1.GetResponseStream())。ReadToEnd();





此代码给出了(401)
$ b中的无法管理的异常$ b

WebResponse response1 = request1.GetResponse();

var oauth_token ="";
var oauth_token_secret = "";

var oauth_consumer_key = "";
var oauth_consumer_secret = "";

//requestToken = OAuthUtility.GetRequestToken(oauth_consumer_key, oauth_consumer_secret, "http://127.0.0.1/");
//var oauth_token =requestToken.Token;
//var oauth_token_secret = requestToken.TokenSecret;

// oauth implementation details
var oauth_version = "1.0";
var oauth_signature_method = "HMAC-SHA1";

// unique request details
var oauth_nonce = Convert.ToBase64String(
new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
var timeSpan = DateTime.UtcNow
- new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
var oauth_timestamp = Convert.ToInt64(timeSpan.TotalSeconds).ToString();

// message api details
var status = "Updating status via REST API if this works";
var resource_url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
var screen_name ="username";
var count = "1";
// create oauth signature
var baseFormat = "count={7}&oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" + "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&screen_name={6}";
var baseString = string.Format(baseFormat, oauth_consumer_key, oauth_nonce, oauth_signature_method, oauth_timestamp, oauth_token, oauth_version, Uri.EscapeDataString(screen_name), Uri.EscapeDataString(count));

baseString = string.Concat("GET&", Uri.EscapeDataString(resource_url), "&", Uri.EscapeDataString(baseString));

var compositeKey = string.Concat(Uri.EscapeDataString(oauth_consumer_secret),
"&", Uri.EscapeDataString(oauth_token_secret));

string oauth_signature;
using (HMACSHA1 hasher = new HMACSHA1(ASCIIEncoding.ASCII.GetBytes(compositeKey)))
{
oauth_signature = Convert.ToBase64String(
hasher.ComputeHash(ASCIIEncoding.ASCII.GetBytes(baseString)));
}

// create the request header
var headerFormat = "OAuth oauth_nonce=\"{0}\", oauth_signature_method=\"{1}\", " +
"oauth_timestamp=\"{2}\", oauth_consumer_key=\"{3}\", " +
"oauth_token=\"{4}\", oauth_signature=\"{5}\", " +
"oauth_version=\"{6}\"";

var authHeader = string.Format(headerFormat,
Uri.EscapeDataString(oauth_nonce),
Uri.EscapeDataString(oauth_signature_method),
Uri.EscapeDataString(oauth_timestamp),
Uri.EscapeDataString(oauth_consumer_key),
Uri.EscapeDataString(oauth_token),
Uri.EscapeDataString(oauth_signature),
Uri.EscapeDataString(oauth_version)
);


// make the request

ServicePointManager.Expect100Continue = false;

var postBody = "screen_name=" + Uri.EscapeDataString(screen_name);//
var postbody2 = "count=" + Uri.EscapeDataString(count);
resource_url += "?" + postBody + "&" + postbody2;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(resource_url);
request.Headers.Add("Authorization", authHeader);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";


WebResponse response = request.GetResponse();
string responseData = new StreamReader(response.GetResponseStream()).ReadToEnd();

var resource_url1 = "https://api.twitter.com/1.1/statuses/update.json";
resource_url1 += "?status=" + textbox.Text;

HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(resource_url1);
request1.Headers.Add("Authorization", authHeader);
request1.Method = "POST";
request1.ContentType = "application/x-www-form-urlencoded";

WebResponse response1 = request1.GetResponse();
string responseData1 = new StreamReader(response1.GetResponseStream()).ReadToEnd();


This code gives (401)Unautorized exception in

WebResponse response1 = request1.GetResponse();

推荐答案

选择这些:

http://youtu.be/RRfSo4Per4I [ ^ ]







http://youtu.be/TGEA1sgMMqU [ ^ ]



希望有所帮助:D
Chech out these:
http://youtu.be/RRfSo4Per4I[^]

and

http://youtu.be/TGEA1sgMMqU[^]

Hope it helps :D


这篇关于使用c#更新twitter状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆