【问题标题】:LinqToTwitter user authorization ASP.NET MVCLinqToTwitter 用户授权 ASP.NET MVC
【发布时间】:2014-09-10 08:02:32
【问题描述】:

我在我的 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 帐户,所以我需要检索多个访问令牌。

【问题讨论】:

  • 启动 Fiddler 并查看第二个请求/响应。 twitter 是否返回 500 消息?
  • 明天我会试一试,看看我能得到什么。

标签: c# asp.net-mvc asp.net-mvc-5 linq-to-twitter


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多