Help us understand the problem. What is going on with this article?

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

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/

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away