Twitter への投稿に使用できるライブラリをいくつか見ました。しかし、後で他のソーシャルネットワークにもこれを拡張する必要があるため、独自のものを作成したいと考えています。
私は RESTSharp を使用して、物事を少し簡単にしています。
私のコントローラーでは、2つのメソッドを書きました..
public ActionResult TwitterLogin()
{
var authorizeUrl = TwitterService.Authorize();
if(!String.IsNullOrEmpty(authorizeUrl))
{
return Redirect(authorizeUrl);
}
else
{
return View();
}
}
public ActionResult AuthorizeCallback()
{
TwitterService.AuthorizeCallback();
return View();
}
ツイッターサービスで
public string Authorize()
{
client = new RestClient(BaseUrl) {Authenticator = OAuth1Authenticator.ForRequestToken(ConsumerKey, ConsumerSecret, CallbackUrl)};
var request = new RestRequest("oauth/request_token", Method.POST);
var response = client.Execute(request);
if(response.StatusCode == HttpStatusCode.OK)
{
var qs = HttpUtility.ParseQueryString(response.Content);
oauth_token = qs["oauth_token"];
oauth_token_secret = qs["oauth_token_secret"];
request = new RestRequest("oauth/authorize");
request.AddParameter("oauth_token", oauth_token);
return client.BuildUri(request).ToString();
}
return String.Empty;
}
public void AuthorizeCallback()
{
var verifier = "123456"; // <-- Breakpoint here (set verifier in debugger)
var request = new RestRequest("oauth/access_token", Method.POST);
client.Authenticator = OAuth1Authenticator.ForAccessToken(ConsumerKey, ConsumerSecret, oauth_token, oauth_token_secret, verifier);
var response = client.Execute(request);
var qs = HttpUtility.ParseQueryString(response.Content);
oauth_token = qs["oauth_token"];
oauth_token_secret = qs["oauth_token_secret"];
}
今、私の懸念は、私がそれを正しく行っているかどうかです。
Oauthに関しては、私が理解したことから、Twitterからリクエストトークンを作成し、ユーザーにそれを承認してもらい、それを使用してアクセストークンを取得し、それを使用して他のリクエストに署名します。私は主にこのリンクを見てこのコードを書きました https://github.com/restsharp/RestSharp/blob/master/RestSharp.IntegrationTests/oAuth1Tests.cs
これをもっとうまく書けるかどうか?また、RestSharp を使用して OAuth リクエストを作成し、API のような twitter を使用する方法について、誰かが私を案内してくれます。インターネット参照のほとんどは、カスタム ライブラリに基づいています。