48JIGEN *Reloaded*

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

今日から始めるJenkins CI(PHP, Windows, XAMPP使い向け)

オープンデータの実証用サイトOpen DATA METIを使う

 

about me

@remore is a software engineer, weekend contrabassist, and occasional public speaker. Read more