繁体   English   中英

LinqToTwitter用户授权ASP.NET MVC

[英]LinqToTwitter user authorization ASP.NET MVC

我在我的asp.net MVC中使用LinqToTwitter,我们在应用程序中遇到以下问题。 我使用Twitter登录的方法如下所示:

    [Authorize(Roles = UserRoleNames.EmployeeOrManager)]
    public virtual async Task<ActionResult> LoginToTwitter(int campaignId)
    {            
        string twitterCallbackUrl = Url.SecureActionAbsolute(MVC.Campaign.TwitterAccessToken(campaignId));
        return await TwitterApi.Current.BeginAuthorization(twitterCallbackUrl);
    }

    public async Task<ActionResult> BeginAuthorization(string twitterCallbackUrl)
    {
        var auth = new LinqToTwitter.MvcAuthorizer
        {
            CredentialStore = new LinqToTwitter.SessionStateCredentialStore
            {
                ConsumerKey = ConfigurationManager.AppSettings["TwitterAppKey"],
                ConsumerSecret = ConfigurationManager.AppSettings["TwitterAppSecret"]
            }
        };


        return await auth.BeginAuthorizationAsync(new Uri(twitterCallbackUrl));
    }

我的问题是,当我第一次使用此代码进行授权时,一切正常-我进入回调方法并存储授权用户的访问令牌和访问令牌密钥,但是当我第二次尝试执行此操作时(登录时)在Twitter之外)我没有重定向到我的回调。 关键是我的应用程序用户与多个Twitter帐户相关联,因此我需要检索多个访问令牌。

SessionStateCredentialStore将所有用户的令牌保存为Session状态。 因此,在后续授权中,这些令牌仍然存在,并且授权者不需要用户重新授权您的应用程序。 如果您在调用BeginAuthorizationAsync遇到断点并检查auth.CredentialStore ,则会看到OAuthTokenOAuthTokenSecret的填充值。 您可以通过清除这些值,让用户切换其Twitter用户并重新授权您的应用程序,如下所示:

auth.CredentialStore.OAuthToken = null;
auth.CredentialStore.OAuthTokenSecret = null;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM