LoginSignup
14
17

More than 5 years have passed since last update.

Googleの短縮URLサービスが終了するのでFirebase Dynamic Linksに移行する

Last updated at Posted at 2018-04-23

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変更に伴い、内容を一部改めました。

準備

プロジェクトの作成

  1. Firebase (https://firebase.google.com/) にアクセスする。

  2. Googleアカウントでログインしていない場合は、「ログイン」を押下してログイン処理を行います。後述するウェブ API キーは、この Google アカウントに紐付きます。

  3. 「プロジェクトを追加」を押下します。

  4. 任意のプロジェクト名を入力し、アナリティクスの地域に「日本」、Cloud Firestoreのローケーションに「asia-northeast1」を選択します。「測定管理者間のデータ保護条項に同意します…」にチェックを入れて、「プロジェクトを作成」を押下します。

ウェブ API キーの確認

  1. 左側ペインより「Project Overview」右の歯車を押下し、「設定」を押下します。

  2. ウェブ API キーの値を控えます。

Dynamic Links の取得

短縮 URL を取得したいだけでアプリへの誘導は不要ですが、Dynamic Links を取得するために登録だけします。

  1. 左側ペインより「Project Overview」を押下し、「iOS」を押下します。
    スクリーンショット 2019-02-02 9.10.11.png

  2. iOS バンドル ID に任意のIDを入力し、「アプリを登録」を押下します。

  3. あとは「続行」「続行」「終了」でサクッと終わらせます。終わったら「このステップをスキップ」を押下します。

  4. 左側ペインより「拡大」-「Dynamic Links」を押下し、「始める」を押下します。
    スクリーンショット 2019-02-02 9.44.17.png

  5. 任意のサブドメインを入力し、「続行」を押下します。

  6. 「終了」を押下します。

  7. Dynamic Links を控えます。

API を叩く

いよいよシステム上で短縮 URL を取得します。PHP を使用します。短縮したい URL を引数に渡して getShortUrl 関数を実行すると、短縮URLを返してくれます。

getShortUrl.php
<?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/

14
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
17