1

だから私はLinq-To-Twitterを使ってWindows8ストアアプリにTwitter統合を追加してきましたが、それをいじってみましたが、問題が発生しました。私の現在の認証コードブロックは

  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 at:を取得します。

                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は、TwitterエラーコードをErrorCodeプロパティに含めます。また、Twitterが返すエラーメッセージにメッセージを設定します。InnerExceptionは、元のスタックトレースで根本的な例外を提供します。これは、Twitterから返されたHTTPエラーコードが原因でスローされるWebExceptionであることがよくあります。

于 2013-01-31T16:12:10.410 に答える