当使用Twitter OAuth和TweetSharp时,每次用户想要登录时,我都会被要求授权我的应用程序

时间:2013-09-25 10:10:45

标签: twitter web oauth tweetsharp

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

2 个答案:

答案 0 :(得分:0)

不幸的是,据我所知。 Twitter使用OAuth 1.1而非OAuth 2.0,如Facebook和Google,因此在中间有一个手动步骤,即使用户已经完成,也要求用户对应用程序进行授权。我有完全相同的问题,它似乎是我们必须忍受的东西。

答案 1 :(得分:0)

我遇到的问题与我试图恢复的稍微旧的应用程序有关。我注意到,当我在http://dev.twitter.com/apps的应用设置中选择“使用Twitter登录”时问题就消失了。