LinqToTwitter用户授权ASP.NET MVC

本文关键字:NET MVC ASP 授权 用户 LinqToTwitter | 更新日期: 2023-09-27 18:21:06

我在我的asp.net MVC we应用程序中使用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时),我不会被重定向到我的回调。hing是我的应用程序用户连接了多个twitter帐户,所以我需要检索多个访问令牌。

LinqToTwitter用户授权ASP.NET MVC

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

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