• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javaandroidc++linuxc#objective-ccocoa誰得qtrubypythongamewindowsbathyscaphephpguic翻訳omegattwitterframeworktestbtronarduinovb.net計画中(planning stage)directxpreviewerゲームエンジンdom

OpenTweenのfork


Commit MetaInfo

修订版d883fcc0ab475631cc790c9fac56b89ecd2d3318 (tree)
时间2012-07-12 06:01:00
作者Kimura Youichi <kim.upsilon@bucy...>
CommiterKimura Youichi

Log Message

OAuth認証に内部ブラウザを使用する方法を廃止

参照(チケット #28805): http://sourceforge.jp/ticket/browse.php?group_id=6526&tid=28805

更改概述

差异

--- a/OpenTween/AppendSettingDialog.cs
+++ b/OpenTween/AppendSettingDialog.cs
@@ -1706,19 +1706,15 @@ namespace OpenTween
17061706 string rslt = tw.StartAuthentication(ref pinPageUrl);
17071707 if (string.IsNullOrEmpty(rslt))
17081708 {
1709- using (AuthBrowser ab = new AuthBrowser())
1709+ string pin = AuthDialog.DoAuth(this, pinPageUrl);
1710+ if (!string.IsNullOrEmpty(pin))
17101711 {
1711- ab.Auth = true;
1712- ab.UrlString = pinPageUrl;
1713- if (ab.ShowDialog(this) == DialogResult.OK)
1714- {
1715- this._pin = ab.PinString;
1716- return true;
1717- }
1718- else
1719- {
1720- return false;
1721- }
1712+ this._pin = pin;
1713+ return true;
1714+ }
1715+ else
1716+ {
1717+ return false;
17221718 }
17231719 }
17241720 else
--- a/OpenTween/AuthBrowser.Designer.cs
+++ /dev/null
@@ -1,161 +0,0 @@
1-namespace OpenTween
2-{
3- partial class AuthBrowser
4- {
5- /// <summary>
6- /// 必要なデザイナー変数です。
7- /// </summary>
8- private System.ComponentModel.IContainer components = null;
9-
10- /// <summary>
11- /// 使用中のリソースをすべてクリーンアップします。
12- /// </summary>
13- /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
14- protected override void Dispose(bool disposing)
15- {
16- if (disposing && (components != null))
17- {
18- components.Dispose();
19- }
20- base.Dispose(disposing);
21- }
22-
23- #region Windows フォーム デザイナーで生成されたコード
24-
25- /// <summary>
26- /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
27- /// コード エディターで変更しないでください。
28- /// </summary>
29- private void InitializeComponent()
30- {
31- this.AuthWebBrowser = new System.Windows.Forms.WebBrowser();
32- this.Cancel = new System.Windows.Forms.Button();
33- this.Label1 = new System.Windows.Forms.Label();
34- this.PinText = new System.Windows.Forms.TextBox();
35- this.Panel1 = new System.Windows.Forms.Panel();
36- this.AddressLabel = new System.Windows.Forms.Label();
37- this.Panel2 = new System.Windows.Forms.Panel();
38- this.NextButton = new System.Windows.Forms.Button();
39- this.Panel2.SuspendLayout();
40- this.SuspendLayout();
41- //
42- // AuthWebBrowser
43- //
44- this.AuthWebBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
45- this.AuthWebBrowser.Location = new System.Drawing.Point(0, 22);
46- this.AuthWebBrowser.MinimumSize = new System.Drawing.Size(20, 20);
47- this.AuthWebBrowser.Name = "AuthWebBrowser";
48- this.AuthWebBrowser.Size = new System.Drawing.Size(773, 540);
49- this.AuthWebBrowser.TabIndex = 4;
50- this.AuthWebBrowser.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.AuthWebBrowser_DocumentCompleted);
51- this.AuthWebBrowser.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.AuthWebBrowser_Navigating);
52- //
53- // Cancel
54- //
55- this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
56- this.Cancel.Location = new System.Drawing.Point(536, 32);
57- this.Cancel.Name = "Cancel";
58- this.Cancel.Size = new System.Drawing.Size(75, 15);
59- this.Cancel.TabIndex = 3;
60- this.Cancel.TabStop = false;
61- this.Cancel.Text = "Cancel";
62- this.Cancel.UseVisualStyleBackColor = true;
63- this.Cancel.Click += new System.EventHandler(this.Cancel_Click);
64- //
65- // Label1
66- //
67- this.Label1.AutoSize = true;
68- this.Label1.Dock = System.Windows.Forms.DockStyle.Right;
69- this.Label1.Location = new System.Drawing.Point(531, 0);
70- this.Label1.Name = "Label1";
71- this.Label1.Padding = new System.Windows.Forms.Padding(3);
72- this.Label1.Size = new System.Drawing.Size(29, 18);
73- this.Label1.TabIndex = 0;
74- this.Label1.Text = "PIN";
75- //
76- // PinText
77- //
78- this.PinText.Dock = System.Windows.Forms.DockStyle.Right;
79- this.PinText.Location = new System.Drawing.Point(560, 0);
80- this.PinText.Name = "PinText";
81- this.PinText.Size = new System.Drawing.Size(138, 19);
82- this.PinText.TabIndex = 1;
83- //
84- // Panel1
85- //
86- this.Panel1.AutoSize = true;
87- this.Panel1.Dock = System.Windows.Forms.DockStyle.Top;
88- this.Panel1.Location = new System.Drawing.Point(0, 22);
89- this.Panel1.Name = "Panel1";
90- this.Panel1.Size = new System.Drawing.Size(773, 0);
91- this.Panel1.TabIndex = 3;
92- //
93- // AddressLabel
94- //
95- this.AddressLabel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
96- this.AddressLabel.Dock = System.Windows.Forms.DockStyle.Fill;
97- this.AddressLabel.Location = new System.Drawing.Point(0, 0);
98- this.AddressLabel.Name = "AddressLabel";
99- this.AddressLabel.Size = new System.Drawing.Size(531, 22);
100- this.AddressLabel.TabIndex = 0;
101- this.AddressLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
102- //
103- // Panel2
104- //
105- this.Panel2.Controls.Add(this.Cancel);
106- this.Panel2.Controls.Add(this.AddressLabel);
107- this.Panel2.Controls.Add(this.Label1);
108- this.Panel2.Controls.Add(this.PinText);
109- this.Panel2.Controls.Add(this.NextButton);
110- this.Panel2.Dock = System.Windows.Forms.DockStyle.Top;
111- this.Panel2.Location = new System.Drawing.Point(0, 0);
112- this.Panel2.Name = "Panel2";
113- this.Panel2.Size = new System.Drawing.Size(773, 22);
114- this.Panel2.TabIndex = 5;
115- //
116- // NextButton
117- //
118- this.NextButton.Dock = System.Windows.Forms.DockStyle.Right;
119- this.NextButton.Location = new System.Drawing.Point(698, 0);
120- this.NextButton.Name = "NextButton";
121- this.NextButton.Size = new System.Drawing.Size(75, 22);
122- this.NextButton.TabIndex = 2;
123- this.NextButton.Text = "Finish";
124- this.NextButton.UseVisualStyleBackColor = true;
125- this.NextButton.Click += new System.EventHandler(this.NextButton_Click);
126- //
127- // AuthBrowser
128- //
129- this.AcceptButton = this.NextButton;
130- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
131- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
132- this.CancelButton = this.Cancel;
133- this.ClientSize = new System.Drawing.Size(773, 562);
134- this.Controls.Add(this.AuthWebBrowser);
135- this.Controls.Add(this.Panel1);
136- this.Controls.Add(this.Panel2);
137- this.MaximizeBox = false;
138- this.MinimizeBox = false;
139- this.Name = "AuthBrowser";
140- this.ShowIcon = false;
141- this.Text = "Browser";
142- this.Load += new System.EventHandler(this.AuthBrowser_Load);
143- this.Panel2.ResumeLayout(false);
144- this.Panel2.PerformLayout();
145- this.ResumeLayout(false);
146- this.PerformLayout();
147-
148- }
149-
150- #endregion
151-
152- internal System.Windows.Forms.WebBrowser AuthWebBrowser;
153- internal System.Windows.Forms.Button Cancel;
154- internal System.Windows.Forms.Label Label1;
155- internal System.Windows.Forms.TextBox PinText;
156- internal System.Windows.Forms.Panel Panel1;
157- internal System.Windows.Forms.Label AddressLabel;
158- internal System.Windows.Forms.Panel Panel2;
159- internal System.Windows.Forms.Button NextButton;
160- }
161-}
\ No newline at end of file
--- a/OpenTween/AuthBrowser.cs
+++ /dev/null
@@ -1,98 +0,0 @@
1-// OpenTween - Client of Twitter
2-// Copyright (c) 2007-2011 kiri_feather (@kiri_feather) <kiri.feather@gmail.com>
3-// (c) 2008-2011 Moz (@syo68k)
4-// (c) 2008-2011 takeshik (@takeshik) <http://www.takeshik.org/>
5-// (c) 2010-2011 anis774 (@anis774) <http://d.hatena.ne.jp/anis774/>
6-// (c) 2010-2011 fantasticswallow (@f_swallow) <http://twitter.com/f_swallow>
7-// (c) 2011 kim_upsilon (@kim_upsilon) <https://upsilo.net/~upsilon/>
8-// All rights reserved.
9-//
10-// This file is part of OpenTween.
11-//
12-// This program is free software; you can redistribute it and/or modify it
13-// under the terms of the GNU General Public License as published by the Free
14-// Software Foundation; either version 3 of the License, or (at your option)
15-// any later version.
16-//
17-// This program is distributed in the hope that it will be useful, but
18-// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20-// for more details.
21-//
22-// You should have received a copy of the GNU General Public License along
23-// with this program. If not, see <http://www.gnu.org/licenses/>, or write to
24-// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
25-// Boston, MA 02110-1301, USA.
26-
27-using System;
28-using System.Collections.Generic;
29-using System.ComponentModel;
30-using System.Data;
31-using System.Drawing;
32-using System.Linq;
33-using System.Text;
34-using System.Windows.Forms;
35-using System.Text.RegularExpressions;
36-
37-namespace OpenTween
38-{
39- public partial class AuthBrowser : Form
40- {
41- public string UrlString { get; set; }
42- public string PinString { get; set; }
43- public bool Auth { get; set; }
44-
45- private InternetSecurityManager SecurityManager;
46-
47- private void AuthWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
48- {
49- if (this.AuthWebBrowser.Url.OriginalString == "https://api.twitter.com/oauth/authorize")
50- {
51- Regex rg = new Regex("<code>(\\d+)</code>");
52- Match m = rg.Match(this.AuthWebBrowser.DocumentText);
53- if (m.Success)
54- {
55- PinString = m.Result("${1}");
56- PinText.Text = m.Result("${1}");
57- PinText.Focus();
58- }
59- }
60- }
61-
62- private void AuthBrowser_Load(object sender, EventArgs e)
63- {
64- this.SecurityManager = new InternetSecurityManager(this.AuthWebBrowser);
65-
66- this.AuthWebBrowser.Navigate(new Uri(UrlString));
67- if (!Auth)
68- {
69- this.Label1.Visible = false;
70- this.PinText.Visible = false;
71- }
72- }
73-
74- private void AuthWebBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
75- {
76- this.AddressLabel.Text = e.Url.OriginalString;
77- }
78-
79- private void NextButton_Click(object sender, EventArgs e)
80- {
81- PinString = PinText.Text.Trim();
82- this.DialogResult = DialogResult.OK;
83- }
84-
85- private void Cancel_Click(object sender, EventArgs e)
86- {
87- PinString = "";
88- this.DialogResult = DialogResult.Cancel;
89- }
90-
91- public AuthBrowser()
92- {
93- this.Auth = true;
94-
95- InitializeComponent();
96- }
97- }
98-}
--- a/OpenTween/AuthBrowser.resx
+++ /dev/null
@@ -1,120 +0,0 @@
1-<?xml version="1.0" encoding="utf-8"?>
2-<root>
3- <!--
4- Microsoft ResX Schema
5-
6- Version 2.0
7-
8- The primary goals of this format is to allow a simple XML format
9- that is mostly human readable. The generation and parsing of the
10- various data types are done through the TypeConverter classes
11- associated with the data types.
12-
13- Example:
14-
15- ... ado.net/XML headers & schema ...
16- <resheader name="resmimetype">text/microsoft-resx</resheader>
17- <resheader name="version">2.0</resheader>
18- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23- <value>[base64 mime encoded serialized .NET Framework object]</value>
24- </data>
25- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27- <comment>This is a comment</comment>
28- </data>
29-
30- There are any number of "resheader" rows that contain simple
31- name/value pairs.
32-
33- Each data row contains a name, and value. The row also contains a
34- type or mimetype. Type corresponds to a .NET class that support
35- text/value conversion through the TypeConverter architecture.
36- Classes that don't support this are serialized and stored with the
37- mimetype set.
38-
39- The mimetype is used for serialized objects, and tells the
40- ResXResourceReader how to depersist the object. This is currently not
41- extensible. For a given mimetype the value must be set accordingly:
42-
43- Note - application/x-microsoft.net.object.binary.base64 is the format
44- that the ResXResourceWriter will generate, however the reader can
45- read any of the formats listed below.
46-
47- mimetype: application/x-microsoft.net.object.binary.base64
48- value : The object must be serialized with
49- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50- : and then encoded with base64 encoding.
51-
52- mimetype: application/x-microsoft.net.object.soap.base64
53- value : The object must be serialized with
54- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55- : and then encoded with base64 encoding.
56-
57- mimetype: application/x-microsoft.net.object.bytearray.base64
58- value : The object must be serialized into a byte array
59- : using a System.ComponentModel.TypeConverter
60- : and then encoded with base64 encoding.
61- -->
62- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64- <xsd:element name="root" msdata:IsDataSet="true">
65- <xsd:complexType>
66- <xsd:choice maxOccurs="unbounded">
67- <xsd:element name="metadata">
68- <xsd:complexType>
69- <xsd:sequence>
70- <xsd:element name="value" type="xsd:string" minOccurs="0" />
71- </xsd:sequence>
72- <xsd:attribute name="name" use="required" type="xsd:string" />
73- <xsd:attribute name="type" type="xsd:string" />
74- <xsd:attribute name="mimetype" type="xsd:string" />
75- <xsd:attribute ref="xml:space" />
76- </xsd:complexType>
77- </xsd:element>
78- <xsd:element name="assembly">
79- <xsd:complexType>
80- <xsd:attribute name="alias" type="xsd:string" />
81- <xsd:attribute name="name" type="xsd:string" />
82- </xsd:complexType>
83- </xsd:element>
84- <xsd:element name="data">
85- <xsd:complexType>
86- <xsd:sequence>
87- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89- </xsd:sequence>
90- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93- <xsd:attribute ref="xml:space" />
94- </xsd:complexType>
95- </xsd:element>
96- <xsd:element name="resheader">
97- <xsd:complexType>
98- <xsd:sequence>
99- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100- </xsd:sequence>
101- <xsd:attribute name="name" type="xsd:string" use="required" />
102- </xsd:complexType>
103- </xsd:element>
104- </xsd:choice>
105- </xsd:complexType>
106- </xsd:element>
107- </xsd:schema>
108- <resheader name="resmimetype">
109- <value>text/microsoft-resx</value>
110- </resheader>
111- <resheader name="version">
112- <value>2.0</value>
113- </resheader>
114- <resheader name="reader">
115- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116- </resheader>
117- <resheader name="writer">
118- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119- </resheader>
120-</root>
\ No newline at end of file
--- a/OpenTween/OpenTween.csproj
+++ b/OpenTween/OpenTween.csproj
@@ -75,11 +75,11 @@
7575 <Compile Include="AppendSettingDialog.Designer.cs">
7676 <DependentUpon>AppendSettingDialog.cs</DependentUpon>
7777 </Compile>
78- <Compile Include="AuthBrowser.cs">
78+ <Compile Include="AuthDialog.cs">
7979 <SubType>Form</SubType>
8080 </Compile>
81- <Compile Include="AuthBrowser.Designer.cs">
82- <DependentUpon>AuthBrowser.cs</DependentUpon>
81+ <Compile Include="AuthDialog.Designer.cs">
82+ <DependentUpon>AuthDialog.cs</DependentUpon>
8383 </Compile>
8484 <Compile Include="Bing.cs" />
8585 <Compile Include="Connection\HttpOAuthApiProxy.cs" />
@@ -244,6 +244,12 @@
244244 <Compile Include="Connection\HttpConnection.cs" />
245245 </ItemGroup>
246246 <ItemGroup>
247+ <EmbeddedResource Include="AuthDialog.en.resx">
248+ <DependentUpon>AuthDialog.cs</DependentUpon>
249+ </EmbeddedResource>
250+ <EmbeddedResource Include="AuthDialog.resx">
251+ <DependentUpon>AuthDialog.cs</DependentUpon>
252+ </EmbeddedResource>
247253 <EmbeddedResource Include="EventViewerDialog.en.resx">
248254 <DependentUpon>EventViewerDialog.cs</DependentUpon>
249255 </EmbeddedResource>
@@ -300,9 +306,6 @@
300306 <EmbeddedResource Include="AppendSettingDialog.zh-CHS.resx">
301307 <DependentUpon>AppendSettingDialog.cs</DependentUpon>
302308 </EmbeddedResource>
303- <EmbeddedResource Include="AuthBrowser.resx">
304- <DependentUpon>AuthBrowser.cs</DependentUpon>
305- </EmbeddedResource>
306309 <EmbeddedResource Include="DialogAsShieldIcon.resx">
307310 <DependentUpon>DialogAsShieldIcon.cs</DependentUpon>
308311 </EmbeddedResource>
--- a/OpenTween/Properties/Resources.Designer.cs
+++ b/OpenTween/Properties/Resources.Designer.cs
@@ -1,7 +1,7 @@
11 //------------------------------------------------------------------------------
22 // <auto-generated>
33 // このコードはツールによって生成されました。
4-// ランタイム バージョン:4.0.30319.261
4+// ランタイム バージョン:4.0.30319.269
55 //
66 // このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
77 // コードが再生成されるときに損失したりします。
@@ -338,6 +338,15 @@ namespace OpenTween.Properties {
338338 }
339339
340340 /// <summary>
341+ /// ブラウザの起動に失敗しました。エラーコード: {0} に類似しているローカライズされた文字列を検索します。
342+ /// </summary>
343+ internal static string BrowserStartFailed {
344+ get {
345+ return ResourceManager.GetString("BrowserStartFailed", resourceCulture);
346+ }
347+ }
348+
349+ /// <summary>
341350 /// 実行形式ファイル(*.exe)|*.exe|すべてのファイル(*.*)|*.* に類似しているローカライズされた文字列を検索します。
342351 /// </summary>
343352 internal static string Button3_ClickText1 {
@@ -628,18 +637,22 @@ namespace OpenTween.Properties {
628637 /// <summary>
629638 /// 更新履歴
630639 ///
631- ///==== Ver 1.0.2-beta1(2012/xx/xx)
632- /// * FIX: 発言詳細部においてUnicodeで追加された一部の文字が正しく表示されない問題を修正
640+ ///==== Ver 1.0.4-beta1(2012/xx/xx)
641+ /// * NEW: 「タブを固定」機能を追加
642+ /// * CHG: OAuth認証に内部ブラウザを使用する方法を廃止
643+ /// * FIX: プロフィール編集中に編集画面を閉じると次回編集時の挙動がおかしくなる問題を修正 (thanks @miracleflyer!)
644+ ///
645+ ///==== Ver 1.0.3(2012/05/26)
646+ /// * NEW: via.me のサムネイル表示に対応
647+ /// * CHG: yats-data.comのTwitter検索を削除 (サイト閉鎖のため)
648+ /// * FIX: UserStreamsのイベントログ表示をEscキーで閉じられない問題を修正
649+ /// * FIX: yfrogのサムネイルURL仕様変更に対応
650+ /// * FIX: ツイートに含まれるpixivのイラストURLの判定を修正
651+ /// * FIX: Pcklesのサムネイルが画像によっては表示できないことがある問題を修正
633652 ///
634- ///==== Ver 1.0.1(2012/04/09)
635- /// * FIX: OpenTweenアイコンが表示方法によって低解像度で表示されてしまう問題を修正
636- /// * FIX: リスト表示上での一部のショートカットキーが動作しない問題を修正
637- /// * FIX: 「常に最前面に表示」が有効な状態でバージョン情報ダイアログを表示できない問題を修正
638- /// * FIX: 「最小化したときにアイコン化する」が強制的にオンになる問題を修正
639- /// * FIX: STOT形式コピー時にprotectedユーザのつぶやきが混ざっているとエラーが発生する問題を修正 (thanks @tests_peer!)
640- /// * FIX: PublicSearchタブで、一度クリアしたツイートがタブ更新時に再び表示されてしまう問題を修正 (thanks @5px!)
641- /// * NEW: TwitrPixとPcklesのサムネイル画像表示に対応
642- /// * NEW: fb. [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。
653+ ///==== Ver 1.0.2(2012/05/19)
654+ /// * NEW: アップデート確認機能を追加
655+ /// * FIX: 発言詳細部においてUni [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。
643656 /// </summary>
644657 internal static string ChangeLog {
645658 get {
--- a/OpenTween/Properties/Resources.en.resx
+++ b/OpenTween/Properties/Resources.en.resx
@@ -1071,4 +1071,7 @@
10711071 <data name="Yes" xml:space="preserve">
10721072 <value>Yes</value>
10731073 </data>
1074+ <data name="BrowserStartFailed" xml:space="preserve">
1075+ <value>Failed to start browser. Error code: {0}</value>
1076+ </data>
10741077 </root>
\ No newline at end of file
--- a/OpenTween/Properties/Resources.resx
+++ b/OpenTween/Properties/Resources.resx
@@ -1138,4 +1138,7 @@
11381138 <data name="LogoImage" type="System.Resources.ResXFileRef, System.Windows.Forms">
11391139 <value>..\resources\logoimage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
11401140 </data>
1141+ <data name="BrowserStartFailed" xml:space="preserve">
1142+ <value>ブラウザの起動に失敗しました。エラーコード: {0}</value>
1143+ </data>
11411144 </root>
\ No newline at end of file
--- a/OpenTween/Resources/ChangeLog.txt
+++ b/OpenTween/Resources/ChangeLog.txt
@@ -2,6 +2,7 @@
22
33 ==== Ver 1.0.4-beta1(2012/xx/xx)
44 * NEW: 「タブを固定」機能を追加
5+ * CHG: OAuth認証に内部ブラウザを使用する方法を廃止
56 * FIX: プロフィール編集中に編集画面を閉じると次回編集時の挙動がおかしくなる問題を修正 (thanks @miracleflyer!)
67
78 ==== Ver 1.0.3(2012/05/26)