Linq To Twitter清除IOAuthCredentials凭据

时间:2014-01-16 17:48:14

标签: c# linq-to-twitter

我有一项功能可以创建语音消息,如果通过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();

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

1 个答案:

答案 0 :(得分:2)

SessionStateCredentials类型具有使用会话状态作为其后备存储的属性。以下是一些选项,各有利弊:

  1. 将属性设置为null。 e.g。

    credentials.ConsumerKey = null; credentials.ConsumerSecret = null; //等......

  2. 虽然你可以编写一个封装语句的方法,但这有点难看。

    1. 清除各个会话状态项。 e.g。

      Session.Remove( “ConsumerKey”); Session.Remove( “ConsumerSecret”); //等......

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

      1. 使用Clear方法从SessionStateCredentials派生一个新类,该方法执行上述方法之一的步骤。这可能是最干净的选择。
      2. 这是SessionStateCredentials类的链接,因此您可以看到内部实现:

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