goo.gl(Google の短縮 URL サービス) の API を PHP で利用する方法

いつもシェアしていただいてありがとうございます。これからも「ちょいとお役立ちして嬉しくなる」記事の配信を目指しています。ポチッと↓のボタンからシェアしてください。

背景

複数の URL が含まれているデータの URL 毎のアクセス解析を行いたかったのですが、goo.gl の Web ページを使って手動で URL を短縮するのはキツイのでプログラムにしてみましたのメモ。

概要

技術的なポイントは3つ。

・Google の提供している短縮 URL の API の利用
・CURL を利用して PHP で HTTP POST を行う
・JSON データの解析

事前準備

Google の API を利用するためには、予め Google の API Access を利用できるようにする必要があります。

次の手順で API key を取得してください。
※画面はしばしば変わりますが、参考までにキャプチャも載せておきます

  1. Google APIs Console にログイン
  2. 「Services」サブメニューを選択
  3. 「URL Shortener API」を「Active」に変更
    Google APIs Console
  4. 「API Access」サブメニューを選択
  5. 「Create new Browser key」ボタンをクリックしてダイアログを表示
  6. 「Referers」を、必要があれば指定(この例では未指定)
  7. 「Create」ボタンをクリックして閉じる
  8. 「API key」が確認できる画面が表示される
    Aeroスナップ

画面に出ている「API key」が、プログラムでアクセスする際に必要な情報です。

プログラム

get_tiny_url() と言う関数にしてみました。

[code lang=’php’] function get_tiny_url($long_url = ”){
$api_key = ‘xxxxxxxxxxxxxxxxx’;

$ch = curl_init();
$options = array(
CURLOPT_URL => “https://www.googleapis.com/urlshortener/v1/url?key=$api_key”,
CURLOPT_HTTPHEADER => array(‘Content-Type: application/json’),
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => ‘{“longUrl”:”‘ . $long_url . ‘”}’,
CURLOPT_RETURNTRANSFER => TRUE
);
curl_setopt_array($ch, $options);
$res = curl_exec($ch);
curl_close($ch);

$jh = json_decode($res);
return $jh->id;
}
[/code]

$api_key には、事前準備で取得した API key を指定します。
$options の CURLOPT_URL は、URL 短縮を行う Google API に API key を付けて認証するための指定です。
$options の CURLOPT_HTTPHEADER は、Google API を利用するための HTTP ヘッダーの指定です。
$options の CURLOPT_POST を TRUE にして、CURL の METHOD を POST に指定しています。
$options の CURLOPT_POSTFIELDS は、短縮を行う長い URL を JSON 形式で指定しています。
$options の CURLOPT_RETURNTRANSFER を TRUE にして、戻り値を文字列で受け取るように指定しています。

curl_exec() によって取得したデータ JSON 形式ですので、json_decode() で連想配列にしてから取り出します。

ちなみに、プログラム中の $res を var_dump($res) すると、次の様な JSON データが返ってきます。
[code lang=’text’] {
“kind”: “urlshortener#url”,
“id”: “http://goo.gl/xxxx”,
“longUrl”: “http://long.url/path/to”
}
[/code]

この関数の使い方は次の通り。
[code lang=’php’] $long_url = ‘http://long.url/path/to’;
echo get_tiny_url($long_url);
[/code]

get_tiny_url() 関数に長い URL を渡すと、短い URL にして返します。

まとめ

それほど複雑なステップを踏まなくても短縮 URL が取得できました。
ただ、残念ながらプログラムで作成した短縮 URL は goo.gl のコンソールの短縮した URL の一覧には表示されません。

アクセス数などの解析をしたいときは、短縮 URL の最後に「+」を付けてブラウザで開くことで確認することになります。

参考:

Google API のヘルプ
PHP マニュアル – CURL

いつもシェアしていただいてありがとうございます。これからも「ちょいとお役立ちして嬉しくなる」記事の配信を目指しています。ポチッと↓のボタンからシェアしてください。

山本をフォローするだけでちょっぴりお得な情報が見つかりますよ↓↓↓