ユーザーが Twitter ID を使用してサイトにログインできるように、Twitter で OAuth を実装しようとしています。このために、TweetSharp ライブラリを使用しています。彼らが持っている例に従って、動作するように見える次のコードを書きました。
public ActionResult Login(string oauth_token, string oauth_verifier)
{
var service = new TwitterService(consumerKey, consumerSecret);
if (oauth_token == null)
{
var requestToken = service.GetRequestToken(Request.Url.ToString());
var uri = service.GetAuthorizationUri(requestToken);
return new RedirectResult(uri.ToString(), false);
}
else
{
var requestToken = new OAuthRequestToken { Token = oauth_token };
OAuthAccessToken accessToken = service.GetAccessToken(requestToken, oauth_verifier);
service.AuthenticateWith(accessToken.Token, accessToken.TokenSecret);
TwitterUser user = service.VerifyCredentials(new VerifyCredentialsOptions());
TempData["response"] = string.Format("Your username is {0}", user.ScreenName);
return RedirectToAction("Success");
}
}
public ActionResult Success()
{
ViewBag.Response = TempData["response"];
return View();
}
ただし、問題があります。ユーザーがシステムにログインするたびに、以前に行ったことがある場合でも、twitter はアプリケーションを承認するように求めます。この動作を防ぐ方法はありますか? また、Facebook と Google で OAuth を実装しており、システムにログインするたびにアプリケーションを承認する必要はありません。