Linq-to-Twitter 身份验证错误

本文关键字:错误 身份验证 Linq-to-Twitter | 更新日期: 2023-09-27 17:56:37

所以我一直在使用Linq-To-Twitter将Twitter集成添加到我的Windows 8商店应用程序中,此外,我遇到了一个问题。我当前的身份验证代码块是

  var auth = new WinRtAuthorizer
        {
            Credentials = new LocalDataCredentials
            {
                ConsumerKey = "",
                ConsumerSecret = ""
            },
            UseCompression = true,
            Callback = new Uri("http://linqtotwitter.codeplex.com/")
        };
        if (auth == null || !auth.IsAuthorized)
        {
            await auth.AuthorizeAsync();
        }

这很好用,除非我进入身份验证屏幕并单击左上角的后退按钮,以退出身份验证而不提供详细信息。 此时,我得到一个TwitterQueryException: 错误的身份验证数据:

                var timelineResponse =
                 (from tweet in twitterCtx.Status
                  where tweet.Type == StatusType.Home
                  select tweet)
                 .ToList();

显然,因为身份验证信息错误,我正在尝试找到一种方法,如果身份验证失败/被回退,则停止继续执行其余代码。

我尝试过简单的布尔检查,但没有效果。几个小时以来,我一直在融化我的大脑,所以任何帮助将不胜感激。谢谢一堆!

Linq-to-Twitter 身份验证错误

您可以查询 Account.VerifyCredentials 以确保用户在执行任何其他操作之前已登录。下面是一个示例:

        const int BadAuthenticationData = 215;
        var twitterCtx = new TwitterContext(auth);
        try
        {
            var account =
                (from acct in twitterCtx.Account
                 where acct.Type == AccountType.VerifyCredentials
                 select acct)
                .SingleOrDefault();
            await new MessageDialog(
                "Screen Name: " + account.User.Identifier.ScreenName, 
                "Verification Passed")
                .ShowAsync();
        }
        catch (TwitterQueryException tqEx)
        {
            if (tqEx.ErrorCode == BadAuthenticationData)
            {
                new MessageDialog(
                    "User not authenticated", 
                    "Error During Verification.")
                    .ShowAsync();
                return;
            }
            throw;
        }

您的错误处理策略与此不同,这只是一个示例,但它向您展示了如何知道发生了错误,并让您有机会在恢复正常操作之前对问题做出反应。

TwitterQueryException 将在 ErrorCode 属性中包含 Twitter 错误代码。它还将消息设置为Twitter返回的错误消息。InnerException 为底层异常提供了原始堆栈跟踪,这通常是由于从 Twitter 返回的 HTTP 错误代码而引发的 WebException。