여기는 an Oauth 1.0a class이며 Twitter에서 작동하며 원하는 것을 허용합니다.
클래스 사용 방법을 보여주는 a simple example도 있습니다.
코드는 다음과 같습니다
OAuth.Manager oauth;
AuthSettings settings;
public void Foo()
{
oauth = new OAuth.Manager();
oauth["consumer_key"] = TWITTER_CONSUMER_KEY;
oauth["consumer_secret"] = TWITTER_CONSUMER_SECRET;
settings = AuthSettings.ReadFromStorage();
if (VerifyAuthentication())
{
Tweet("Hello, World");
}
}
private void Tweet(string message)
{
var url = "http://api.twitter.com/1/statuses/update.xml?status=" + message;
var authzHeader = oauth.GenerateAuthzHeader(url, "POST");
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.PreAuthenticate = true;
request.AllowWriteStreamBuffering = true;
request.Headers.Add("Authorization", authzHeader);
using (var response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
...
}
}
}
private bool VerifyAuthentication()
{
if (!settings.Completed)
{
var dlg = new TwitterAppApprovalForm(); // your form with an embedded webbrowser
dlg.ShowDialog();
if (dlg.DialogResult == DialogResult.OK)
{
settings.access_token = dlg.AccessToken;
settings.token_secret = dlg.TokenSecret;
settings.Save();
}
if (!settings.Completed)
{
MessageBox.Show("You must approve this app for use with Twitter\n" +
"before updating your status with it.\n\n",
"No Authorizaiton for TweetIt",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
return false;
}
}
// apply stored information into the oauth manager
oauth["token"] = settings.access_token;
oauth["token_secret"] = settings.token_secret;
return true;
}
TwitterAppApprovalForm
는 보일러이며, 예에 포함되어 있습니다. 캐시 된 access_token과 token-secret가 없으면 해당 양식이 열리고 트위터 인증 양식을 표시하는 내장 웹 브라우저가 호스팅됩니다. 캐시 된 데이터가있는 경우 해당 양식을 표시 할 필요가 없습니다.
굵은 글자를 약간 어둡게 표현할 수 있습니다.) – BoltClock
죄송합니다. 질문의 핵심 사항이 강조 표시되면 아이디어를 빨리 얻는 것이 더 쉽다고 생각합니다. – Bassem