3

我有一个创建语音消息的功能,如果通过 Twitter 进行身份验证,则会将消息发布到他们的 Twitter 帐户。我希望用户能够根据需要关闭向 Twitter 发布的消息,所以我很好奇是否有办法清除凭据。我遵循了 LinqToTwitter 文档中的一个示例:

IOAuthCredentials credentials = new SessionStateCredentials();

        if (credentials.ConsumerKey == null || credentials.ConsumerSecret == null)
        {
            credentials.ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"];
            credentials.ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"];
        }

        auth = new WebAuthorizer
        {
            Credentials = credentials,
            PerformRedirect = authUrl => Response.Redirect(authUrl)
        };

        if (!Page.IsPostBack && Request.QueryString["oauth_token"] != null)
        {
            auth.CompleteAuthorization(Request.Url);
        }

        if (auth.IsAuthorized)
        {
            twitterCtx = new TwitterContext(auth);
            Session["TwitterContext"] = twitterCtx;
            twLoginButton.Text = "Logout of Twitter";
        }

我尝试了以下代码和变体:

credentials = null;

或者

SessionStateCredentials credentials = Dispose();

但它显示了每个错误。我希望有人可以指导我清理

IOAuthCredentials credentials = new SessionStateCredentials();

这是我认为需要发生的事情。任何意见,将不胜感激。

4

1 回答 1

2

SessionStateCredentials 类型具有使用 Session 状态作为其后备存储的属性。这里有几个选项,每个选项都有优点和缺点:

  1. 将属性设置为空。例如

    凭据.ConsumerKey = null; 凭据.ConsumerSecret = null; // ETC ...

这有点难看,尽管您可以编写一个方法来封装语句。

  1. 清除各个会话状态项。例如

    Session.Remove("ConsumerKey"); Session.Remove("ConsumerSecret"); // ETC ...

这更明确。但是,它会破坏现有的封装并强制您获取对当前会话的引用。

  1. 使用 Clear 方法从 SessionStateCredentials 派生一个新类,该方法执行上述方法之一的步骤。这可能是最干净的选择。

这是 SessionStateCredentials 类的链接,因此您可以查看内部实现:

http://linqtotwitter.codeplex.com/SourceControl/latest#LinqToTwitter/OAuth/SessionStateCredentials.cs

于 2014-01-16T18:45:35.110 回答