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帐户,所以我需要检索多个访问令牌。
SessionStateCredentialStore
将所有用户的令牌保存为会话状态。因此,在随后的授权中,这些令牌仍然存在,授权者不需要用户重新授权您的应用程序。如果在对BeginAuthorizationAsync
的调用中遇到断点并检查auth.CredentialStore
,则会看到OAuthToken
和OAuthTokenSecret
的填充值。您可以让用户切换他们的Twitter用户,并通过清除这些值来重新授权您的应用程序,如下所示:
auth.CredentialStore.OAuthToken = null;
auth.CredentialStore.OAuthTokenSecret = null;