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

