端くれプログラマの備忘録 PHP [PHP] BitlyのWebAPIを使ってURLを短縮する

[PHP] BitlyのWebAPIを使ってURLを短縮する

先日作成したTwitter botのツイートにサイトURLを短縮して含めたいというニーズあり。調べたところ、短縮URLを生成する機能は各社からWeb APIとして提供されている模様。参考になる記事を探したら以下が非常にわかりやすかったので、この記事に倣ってbitlyのWeb APIを使って短縮URL生成機能を実装してみる。

bit.ly API|短縮URL|Web関連特集|PHP & JavaScript Room
http://phpjavascriptroom.com/?t=topic&p=bitlyapi

OAuth2認証は必要なし、API Keyによる認証でOK

bitlyのオンラインドキュメントを読むと、APIを使うにはユーザ認証が必要。認証方式はOAuth2。だけど、短縮URLの生成に限っては、OAuth2に加えてAPI Keyによるシンプルな認証も可能みたい。実装が少しでも楽になるのはうれしいので、API Keyで認証することにする。

bitly API Documentation
http://dev.bitly.com/links.html#v3_shorten

bitly API Documentation
http://dev.bitly.com/

bitlyのウェブサイトでAPI Keyを取得する

以下のページからサインアップしてAPI Keyを取得する。

Bitly. The power of the link.
https://bitly.com/a/your_api_key

サンプルコード

// サインアップしたユーザ名
$username = "xxxxxx";
// 取得したAPI Key
$api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 
// 短縮したい元URL
$target = "http://www.example.com/test123.html";
$target = urlencode($target);
 
$url = "http://api.bitly.com/v3/shorten";
$url .= "?longUrl=".$target;
$url .= "&login=".$username;
$url .= "&apiKey=".$api_key;
$url .= "&format=xml";
 
$data = file_get_contents($url);
$data = simplexml_load_string($data, 'SimpleXMLElement');
 
// 短縮されたURL
echo "shorten url = " . $data->data->url;