OSDN Git Service

起動時の /account/verify_credentials.json 失敗時にエラーダイアログを表示する
authorKimura Youichi <kim.upsilon@bucyou.net>
Mon, 21 Sep 2015 04:15:37 +0000 (13:15 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Mon, 21 Sep 2015 07:11:34 +0000 (16:11 +0900)
OpenTween/Properties/Resources.Designer.cs
OpenTween/Properties/Resources.en.resx
OpenTween/Properties/Resources.resx
OpenTween/Resources/ChangeLog.txt
OpenTween/Tween.cs
OpenTween/Twitter.cs

index f04c714..96e91cf 100644 (file)
@@ -2585,6 +2585,21 @@ namespace OpenTween.Properties {
         }
         
         /// <summary>
+        ///   Twitter API へのアクセスに失敗しました。
+        ///[{0}]
+        ///
+        ///・ネットワーク設定が正しいか確認して下さい
+        ///・PC の時計が正しいか確認して下さい
+        /// (大幅にずれていると認証に失敗することがあります)
+        ///・設定画面から Twitter アカウントをもう一度追加し直して下さい に類似しているローカライズされた文字列を検索します。
+        /// </summary>
+        internal static string StartupAuthError_Text {
+            get {
+                return ResourceManager.GetString("StartupAuthError_Text", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   読み込みページ数には数値(1~999)を指定してください。 に類似しているローカライズされた文字列を検索します。
         /// </summary>
         internal static string StartupReadDM_ValidatingText1 {
index d10c6f6..1062b86 100644 (file)
@@ -1134,4 +1134,13 @@ Available service: {1}</value>
   <data name="SearchResults_TabName" xml:space="preserve">
     <value>Search Results</value>
   </data>
+  <data name="StartupAuthError_Text" xml:space="preserve">
+    <value>Unable to access Twitter API.
+[{0}]
+
+ * Please confirm the network settings.
+ * Please confirm whether your PC's clock is accurate.
+    (It may fail to authentication when clock is delayed.)
+ * Please re-add the Twitter account in the settings dialog.</value>
+  </data>
 </root>
\ No newline at end of file
index 40db5a0..e57e5d7 100644 (file)
   <data name="SearchResults_TabName" xml:space="preserve">
     <value>検索結果</value>
   </data>
+  <data name="StartupAuthError_Text" xml:space="preserve">
+    <value>Twitter API へのアクセスに失敗しました。
+[{0}]
+
+・ネットワーク設定が正しいか確認して下さい
+・PC の時計が正しいか確認して下さい
+ (大幅にずれていると認証に失敗することがあります)
+・設定画面から Twitter アカウントをもう一度追加し直して下さい</value>
+  </data>
 </root>
\ No newline at end of file
index c2335a3..5368d6e 100644 (file)
@@ -2,6 +2,7 @@
 
 ==== Ver 1.2.9-dev(2015/xx/xx)
  * NEW: ウィンドウ最大化中でも発言詳細部やサムネイルの幅の変更が設定に保存されるようしました
+ * CHG: 起動時にTwitter APIへのアクセスに失敗した場合はエラーダイアログを表示するようにしました
  * FIX: ハッシュタグ付加機能が動作しない不具合を修正
  * FIX: サムネイル画像にフォーカスがない状態でマウスホイールによる画像の切り替えが動作しない不具合を回避
  * FIX: 起動直後の初回のDM一覧取得が失敗する不具合を修正
index 87721e7..4e9c5a4 100644 (file)
@@ -747,7 +747,16 @@ namespace OpenTween
             ShortUrl.Instance.BitlyKey = this._cfgCommon.BitlyPwd;
 
             // アクセストークンが有効であるか確認する
-            this.tw.VerifyCredentials();
+            // ここが Twitter API への最初のアクセスになるようにすること
+            try
+            {
+                this.tw.VerifyCredentials();
+            }
+            catch (WebApiException ex)
+            {
+                MessageBox.Show(this, string.Format(Properties.Resources.StartupAuthError_Text, ex.Message),
+                    Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+            }
 
             //サムネイル関連の初期化
             //プロキシ設定等の通信まわりの初期化が済んでから処理する
index 212e574..6aa677c 100644 (file)
@@ -270,24 +270,22 @@ namespace OpenTween
             {
                 res = twCon.VerifyCredentials(ref content);
             }
-            catch(Exception)
+            catch (Exception ex)
             {
-                return;
+                throw new WebApiException("Err:" + ex.Message, ex);
             }
 
-            if (res == HttpStatusCode.OK)
+            this.CheckStatusCode(res, content);
+
+            try
             {
-                Twitter.AccountState = MyCommon.ACCOUNT_STATE.Valid;
-                TwitterUser user;
-                try
-                {
-                    user = TwitterUser.ParseJson(content);
-                }
-                catch(SerializationException)
-                {
-                    return;
-                }
-                twCon.AuthenticatedUserId = user.Id;
+                var user = TwitterUser.ParseJson(content);
+                this.twCon.AuthenticatedUserId = user.Id;
+            }
+            catch (SerializationException ex)
+            {
+                MyCommon.TraceOut(ex.Message + Environment.NewLine + content);
+                throw new WebApiException("Err:Json Parse Error(DataContractJsonSerializer)", content, ex);
             }
         }