CSSやWEBデザインなど、WEBの世界に関するものが中心です。最近はプログラミング寄りですが。jQueryとか、PHPだとCakePHP使ったりします。Flashは紹介するだけ。たまに大学生活やビジネスについても。

PHPでbit.lyのAPIを使って自分のサイトで短縮URLを使えるようにしてみる

Twitterの流行でURLを短くするサービスが多く利用されるようになりましたね。
 
bit.lyはその中でも有名ですが、今回はbit.lyで提供されているAPIを使って、自分のサイトに設置したフォームからでも短縮URLを使える方法をご紹介します。
 
ちなみにbit.lyの便利さはこちらを参考にするとよくわかります。
短縮URLサイト「bit.ly」のアカウントを持ってると利用できる便利機能まとめ*二十歳街道まっしぐら
アクセス解析なんかもできるんです。
 
 

それでは早速。

アカウント登録

bit.lyのAPIを使うにはアカウントが必要です。無料で手軽に登録できるので、以下のリンクからどうぞ。
Twitterのアカウントも同時に登録しておくとブックマークレットなどで連動出来ます。
Create a Free bit.ly Account
 
これでAPIを使えるようになりました。APIを使うためのAPI LoginとAPI Keyは、bit.lyにログインして右隅の「Account」にアクセスすると左側に表示されます。
 

 

API

今回利用するbit.lyのAPIのドキュメントを載せておきます。
ApiDocumentation – bitly-api – Documentation of the bit.ly REST API methods – Project Hosting on Google Code
 
今回はこの中でも、URLを短縮するもの(/shorten)に限って紹介します。
URLを短縮する時には、http://api.bit.ly/shorten に各パラメータを投げ、返ってくるデータを利用します。

 
まずはURLを送信するためのフォームを設置します。

<form action="" method="get">
<input type="text" name="bitly" id="bitly" value="" />
<input type="submit" value="shorten" />
</form>

URLをGETメソッドで送信します。送信されたものはPHPで処理します。
 
PHPの処理内容。

<?php
$long_url = htmlspecialchars($_GET['bitly'], ENT_QUOTES);
$req = "http://api.bit.ly/shorten?login=yourAccountName&apiKey=yourApiKey&version=2.0.1&longUrl=".$long_url;
	$contents = file_get_contents($req);
	if(isset($contents)) {
		$url = json_decode($contents, true);
	}
}
echo $url['results'][$long_url]['shortUrl'];
?>

APIに投げるパラメータは以下の通りです。

login Account画面で確認できるAPI Login
apiKey Account画面で確認できるAPI Key
version 2.0.1(固定)
longUrl 短縮したいURL
format json or xml (デフォルトはjson)

 
今回はlongUrlのみフォームから取得し、他は全部決め打ちでやっています。
formatパラメータは今回使っていませんので、データはデフォルトのJSON形式でかえってきます。
ちなみに、今回解説しませんが、longUrlは複数渡すことができます。
 
やっているのはfile_get_contents関数でURLからデータを取得し、それをjson_decode関数を使って連想配列にして出力する、という手順です。
json_decodeはPHP5.2.0以上でしか使えないので、PHP4などの環境の方はデータをxmlで取得するなどしてください。
 
 
全文はこちら。短縮URLもフォームに出力するようにしました。

<?php
$long_url = htmlspecialchars(@$_GET['bitly'], ENT_QUOTES);
$req = "http://api.bit.ly/shorten?login=yourAccountName&apiKey=yourApiKey&version=2.0.1&longUrl=".$long_url;
$contents = file_get_contents($req);
if(isset($contents)) {
	$url = json_decode($contents, true);
}
?>
<form action="" method="get">
<input type="text" name="bitly" id="bitly" value="<?php echo @$url['results'][$long_url]['shortUrl']; ?>" />
<input type="submit" value="shorten" />
</form>

 
 
APIはいろいろ使ってみると楽しいですね。また他のAPIにも挑戦したいと思います。
 
 

Comments on: "PHPでbit.lyのAPIを使って自分のサイトで短縮URLを使えるようにしてみる" (1)

  1. [...] PHPでbit.lyのAPIを使って自分のサイトで短縮URLを使えるようにしてみる [...]

Leave a comment for: "PHPでbit.lyのAPIを使って自分のサイトで短縮URLを使えるようにしてみる"