[英]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
,则会看到OAuthToken
和OAuthTokenSecret
的填充值。 您可以通过清除这些值,让用户切换其Twitter用户并重新授权您的应用程序,如下所示:
auth.CredentialStore.OAuthToken = null;
auth.CredentialStore.OAuthTokenSecret = null;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.