Google URL Shortener サービスが2019年3月30日に終了するみたいですね。Google URL Shortener API を使って URL を短縮しているシステムは別の道を探さなくてはなりません。bit.ly や ow.ly への移行が推奨されていますが、商用利用の場合は月額費用がネックに…。開発者の端くれとして Firebase Dynamic Links (FDL) の REST API を使用してみましたので、手順をご紹介します。
2019.02.02 firebase.google.com のUI変更に伴い、内容を一部改めました。
準備
プロジェクトの作成
Googleアカウントでログインしていない場合は、「ログイン」を押下してログイン処理を行います。後述するウェブ API キーは、この Google アカウントに紐付きます。
任意のプロジェクト名を入力し、アナリティクスの地域に「日本」、Cloud Firestoreのローケーションに「asia-northeast1」を選択します。「測定管理者間のデータ保護条項に同意します…」にチェックを入れて、「プロジェクトを作成」を押下します。
ウェブ API キーの確認
Dynamic Links の取得
短縮 URL を取得したいだけでアプリへの誘導は不要ですが、Dynamic Links を取得するために登録だけします。
API を叩く
いよいよシステム上で短縮 URL を取得します。PHP を使用します。短縮したい URL を引数に渡して getShortUrl
関数を実行すると、短縮URLを返してくれます。
<?php
function getShortUrl($long_url) {
// -----------------------------------------------------------
// config
// -----------------------------------------------------------
// ウェブAPIキーを記述してください
$web_api_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
// ダイナミックリンクURLを記述してください
$dynamic_link_domain = 'https://YYYYYYYYYYYYYY.page.link';
// -----------------------------------------------------------
// 処理
// -----------------------------------------------------------
// 短縮URLの設定
$url = 'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=' . $web_api_key;
$data = array(
"dynamicLinkInfo" => array(
"domainUriPrefix" => $dynamic_link_domain,
"link" => $long_url
),
"suffix" => array(
"option" => "SHORT"
)
);
// POST
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
// 短縮URLを取り出す
$result_obj = json_decode($result);
$short_url = $result_obj->shortLink;
return($short_url);
}
参考
https://firebase.google.com/docs/dynamic-links/rest
https://www.smartllc.jp/blog/20150811-how-to-post-json-in-php/