我正在尝试使用 twitter 实现 OAuth,以便我的用户可以使用他们的 Twitter ID 登录我的网站。为此,我正在使用 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,并且每次我想登录系统时都不需要授权应用程序。