twitterMobileをブラウザから投稿可能にした
2008/10/29
twitterMobileはPHPスクリプトで作成された人気のTwitterクライアント。
(Author:kz (http://miniturbo.org/), Attributor:Yuki Kisaragi (http://www.transrain.net/))
サーバへのインストールがちょう簡単でラヴリー。
twitterMobileは携帯からの接続専用で設計されているため、通常だとブラウザからアクセスできない。
この仕様はセキュリティ的にはナイス!なんだけど、普段PCの前に座ってるIT戦士にはちょっと不便だった。
これをちょっと改造してブラウザからの投稿を可能にしてみた。
#PCのブラウザからならtwitter.comにアクセスすればいいじゃんという異論は認める。
個人的に、twitterへの投稿を同時にブログに登録できるようにtwitterMobileを改造していて、この機能をブラウザからも使いたかったのだ。
完成イメージは、以下のように任意のパスワードつきでtwitterMobileにアクセスしたときだけブラウザから使用可能にする感じ。
http://www.example.com/tm/index.php?password=ANY_PASSWORD
0、http://miniturbo.org/からtwitterMobileのソースコードをダウンロード。
ダウンロードしたソースコードの、ルートフォルダ直下のindex.phpだけ改造します。
1、TwitterMobile()関数(TwtiterMobileクラスのコンストラクタ)でセッション変数mykeyを初期化
function TwitterMobile() { /* EDIT START */ if (isset($_GET['password'])){ if (strcmp($_GET['password'],'ANY_PASSWORD')==0) { $_SESSION['mykey'] = '1'; } } /* EDIT END */ $this->startSession(); $this->initUser(); $this->initPref(); $this->initUtil(); $this->initLocation(); $this->initTemplate(); $this->initSt(); }
2、initUtil()関数(端末情報設定関数)で、セッション変数mykey設定時はブラウザをwillcom端末に偽装
/* * Init Utility */ function initUtil() { $this->_utl =& new MobileUtility(); if ($this->_utl->device == 'docomo') { $this->file_type = '.gif'; $this->prefix = 'i/'; } elseif ($this->_utl->device == 'au') { $this->file_type = '.png'; $this->prefix = 'ez/'; } elseif ($this->_utl->device == 'softbank') { $this->file_type = '.png'; $this->prefix = 'sb/'; } elseif ($this->_utl->device == 'willcom') { $this->file_type = '.png'; $this->prefix = 'w/'; } /* EDIT START */ elseif (isset($_SESSION['mykey'])) { if (strcmp($_SESSION['mykey'], '1') ==0 ) { $this->_utl->device = 'willcom'; $this->file_type = '.png'; $this->prefix = 'w/'; } } /* EDIT END */ else exit(); }
3、resetSession()関数(セッションリセット)時にセッション変数mykeyを1に初期化
/* * Reset Session */ function resetSession() { $_SESSION = array(); if (isset($_COOKIE[session_name()])) setcookie(session_name(), '', time()-42000, '/'); session_destroy(); session_name('key'); session_start(); $_SESSION['sso'] = strip_tags(session_id()); /* EDIT START */ $_SESSION['mykey'] = '1'; /* EDIT END */ }
4、元のソースindex.php L881行目のあたりの端末アクセス条件に、1~3で用意したセッション変数を追加
if ($_tml->_utl->device == 'other') $_tml->dumpData("お使いの機種はご利用になることができません");
↓
if ($_tml->_utl->device == 'other' && strcmp($_SESSION['mykey'], '1') !=0) $_tml->dumpData("お使いの機種はご利用になることができません");
こんな感じ。
メモ:
いじっててわかったんだけど、willcomって固体識別情報を送らないだね。へー。
なんでだろ。個体識別情報って、ユーザ的にはあった方が便利なんだけどなあ。
Related Posts
ちょっとだけ読みやすいnode.jsからmongoDBへの接続のコードの書き方と、ハマったところ / (A Bit) Nicer Node.js Code To Read To Connect DB, and other small tips
about me
@remore is a software engineer, weekend contrabassist, and occasional public speaker. Read more