TIG(TweetIrcGateway/旧TwitterIrcGateWay)2.5へのバージョンアップでOAuth対応するときに注意するたった1つのこと


TIG2.5へのバージョンアップでOAuth対応するときに見事にハマってしまった。

気をつけることはただ1つ、これだけ。

config.xmlのあるフォルダ名を「username/ユーザ名」ではなく「Name/名称」にすること。

C:\Program Files\TwitterIrcGateway\Bin\Configs\orangeclover\Config.xml


何回もOAuthの設定をやり直したり、IRC側のユーザ名を発行された数字にしてみたり、
空にしてみたり、何時間も格闘したがだめで休憩。

  • OAuthAuthentication.cs
namespace Misuzilla.Applications.TwitterIrcGateway.Authentication
{
    public class OAuthAuthentication : IAuthentication
    {
        #region IAuthentication メンバ
        public AuthenticateResult Authenticate(Server server, Connection connection, UserInfo userInfo)
        {
            // ニックネームとパスワードのチェック
            if (String.IsNullOrEmpty(userInfo.Nick))
            {
                return new AuthenticateResult(ErrorReply.ERR_NONICKNAMEGIVEN, "No nickname given");
            }

            // OAuth ログイン/設定
            if (String.IsNullOrEmpty(userInfo.Password))
            {
                connection.SendGatewayServerMessage("* OAuth 認証の設定を開始します...");
                return new OAuthContinueAuthenticationResult();
            }
            else
            {
                var config = Config.LoadConfig(userInfo.UserName); // HOSTING => 番号的 ID になる

                // xAuth fallback
       ★ここ★ if (true && String.IsNullOrEmpty(config.OAuthUserPasswordHash)) 
                {
                    return new XAuthAuthentication().Authenticate(server, connection, userInfo);
                }

                connection.SendGatewayServerMessage("* アカウント認証を確認しています(OAuth)...");
                // OAuth 設定未設定
                if (String.IsNullOrEmpty(config.OAuthAccessToken) || String.IsNullOrEmpty(config.OAuthTokenSecret))
                {
                    connection.SendGatewayServerMessage("* OAuth 認証の設定を開始します...");
                    return new OAuthContinueAuthenticationResult();
                }

ソース見て、config.xmlからOAuthUserPasswordHashが取得できないとxAuthの認証に行くことがわかった。

でもconfig.xmlにはOAuthUserPasswordHashのタグはある。
考えられるのは、フォルダ名誤りか。
「username」以外にある名前というと「Name」か。

フォルダ名を「orange_clover」から「orangeclover」に変更したらあっけなく動作した。
おーす。。。



以下バージョンアップの手順

TIG2.5をダンロード

http://www.misuzilla.org/dist/net/twitterircgateway/
TwitterIrcGateway-2.5.3878.22593.zip

TIG、IRCクライアントを停止
バックアップ

以下のフォルダをバックアップ

C:\Program Files\TwitterIrcGateway\Bin\Configs
モジュールの上書き

TwitterIrcGateway-2.5.3878.22593.zipを回答したものを
以下に上書き

C:\Program Files\TwitterIrcGateway\Bin
TIG、IRCクライアントを起動

BASIC認証のままのユーザ名とパスワードだと以下のエラーになる。これは無視し構わない。

13:25 Created
13:25 localhost:16669 接続中...
13:25 接続完了...サーバーからの返事待ち...
13:25 * アカウント認証を確認しています(xAuth)...
13:25 * アカウント認証に失敗しました。ユーザ名またはパスワードを確認してください。(Invalid user name or password)
13:25 パスワードが正しくありません。パスワードは「設定」->「IRC...」で設定できますので設定しなおしてください。
13:25 回線が切断されました
IRCのパスワードをクリアー

OAuthの認証をするために、パスワードをクリアー

OAuthの認証、PINコードのURLを表示させる

パスワードをクリアーして、再度接続すると以下のメッセージが出力される

  • Consoleに表示されるメッセージ

13:26 Your nick is orange_clover
13:26 *** Welcome to the Internet Relay Network orange_clover!orangeclover@127.0.0.1
13:26 *** This server was created 2010/08/15 13:26:00
13:26 ??? : :localhost 004 orange_clover :ORANGE Misuzilla.Applications.TwitterIrcGateway.Server-2.5.3878.22593  
13:26 Connection Attached: Session: User=orangeclover, Client=127.0.0.1:3418
  • $OAuthに手続きに必要なメッセージ

13:26 Created
13:26 =$OAuth= 次のURLをブラウザで表示してアプリケーションのアクセスを許可してください。また、許可のあと表示される暗証番号(PINコード)を入力してください。
13:26 =$OAuth= https://api.twitter.com/oauth/authorize?oauth_token=省略

tokenは念のため伏せておきます。

OAuthの認証

PINコードの取得

OAuthのPINコードの入力
13:26 =$OAuth= 次のURLをブラウザで表示してアプリケーションのアクセスを許可してください。また、許可のあと表示される暗証番号(PINコード)を入力してください。
13:26 =$OAuth= https://api.twitter.com/oauth/authorize?oauth_token=省略
13:28 >$OAuth< 【PINコードの数字】
13:28 =$OAuth= ユーザー orange_clover (ID:37914199)として認証されました。
TIGを接続するためのパスワードを入力
13:28 =$OAuth= IRCクライアントに設定するためのパスワードを入力してください。
13:29 >$OAuth< 【パスワード】
13:29 =$OAuth= OAuth用のパスワードを設定しました。IRCクライアントの接続設定のパスワードに設定したパスワードを指定して再接続してください。
IRC側にパスワード設定

IRCのパスワードに先ほど入力した【パスワード】を入力

configのフォルダ名を変更

変更前 C:\Program Files\TwitterIrcGateway\Bin\Configs\orange_clover
変更後 C:\Program Files\TwitterIrcGateway\Bin\Configs\orangeclover

接続

  • Console
13:31 localhost:16668 接続中...
13:31 接続完了...サーバーからの返事待ち...
13:31 * アカウント認証を確認しています(OAuth)...
13:31 * アカウント: orange_clover (ID:37914199)
13:31 Your nick is orange_clover
13:31 *** Welcome to the Internet Relay Network orange_clover!orangeclover@127.0.0.1
13:31 *** This server was created 2010/08/15 13:31:19
13:31 ??? : :localhost 004 orange_clover :ORANGE Misuzilla.Applications.TwitterIrcGateway.Server-2.5.3878.22593  
13:31 Connection Attached: Session: User=orangeclover, Client=127.0.0.1:3479
13:31 * 設定を読み込んでいます...
13:31 * セッションを開始しました。
13:31 * アドインを読み込んでいます...
13:31 * アドインを読み込みました。

トラブルシューティング

エラー内容が以下の場合
13:26 Connection Attached: Session: User=orangeclover, Client=127.0.0.1:3418
13:30 回線が切断されました
13:30 localhost:16668 接続中...
13:30 接続完了...サーバーからの返事待ち...
13:30 * アカウント認証を確認しています(xAuth)...
13:30 * アカウント認証に失敗しました。ユーザ名またはパスワードを確認してください。(Invalid user name or password)
13:30 パスワードが正しくありません。パスワードは「設定」->「IRC...」で設定できますので設定しなおしてください。
13:30 回線が切断されました


OAuth認証したはずなのに、「アカウント認証を確認しています(xAuth)...」のエラーが
でてる場合は以下を確認。


1.config.xmlにOAuthUserPasswordHashがあるか

ある→2.へ
ない→OAuth認証のやり直し


2.consoleに出力される以下のユーザ名とconfig.xmlディレクトリ名を確認

Connection Attached: Session: User=orangeclover, Client=127.0.0.1:3418

違う→3.へ
同じ→Twitterのsettging > connection から TweetIrcGatewayをremoveして(不要かも)、もう一度OAuth認証のやり直し。

3.Twitterサイトで 「username/ユーザ名」「Name/名称」を確認する



4.configのフォルダ名を「Name/名称」に変更する。

C:\Program Files\TwitterIrcGateway\Bin\Configs\【Name】\Config.xml

接続できた→完了
接続できない→5.へ

5.configのフォルダ名を「2.で確認したUser」変更する。

C:\Program Files\TwitterIrcGateway\Bin\Configs\【2.のUser】\Config.xml

接続できた→完了
接続できない→僕には分かりません。作者か詳しい人にTwitterなどで聞いてください。

メインのTwitterクライアントは、あくまでTweenなのだ。
iPhoneの場合は、Twitbirdを使っている。
両方ともにOAuthでアクセスしてるので迷わず、TIGをもOAuthにした。
OAuthとxAuthの違いを調べてみたら、OpenTIGにつなぐわけでもなく、
デスクトップクライアントなんだからxAuthでも問題ないですな。