先日作成した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
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// サインアップしたユーザ名 $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; |