1

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

  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: Bad Authentication data 在:

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

显然,由于身份验证信息错误,如果身份验证失败/退出,我正试图找到一种方法来停止继续执行其余代码。

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

4

1 回答 1

1

您可以查询 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 错误代码。它还将 Message 设置为 Twitter 返回的错误消息。InnerException 提供了带有原始堆栈跟踪的底层异常,这通常是由于 Twitter 返回的 HTTP 错误代码而引发的 WebException。

于 2013-01-31T16:12:10.410 回答