0

我正在尝试使用 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,并且每次我想登录系统时都不需要授权应用程序。

4

2 回答 2

0

不幸的是,据我所知。Twitter 使用 OAuth 1.1 而不是像 Facebook 和 Google 那样的 OAuth 2.0,因此中间有一个手动步骤,要求用户授权应用程序,即使他们已经完成了。我遇到了完全相同的问题,这似乎是我们必须忍受的事情。

于 2013-09-25T10:16:11.587 回答
0

我试图复活的一个稍旧的应用程序也遇到了同样的问题。当我在http://dev.twitter.com/apps的应用设置中选择“使用 Twitter 登录”时,我注意到问题消失了。

于 2013-12-12T23:54:44.250 回答