来る今年の8月、短縮リンクサービスであるDynamic Linksはサービスを終了するため、別の方法への移行が迫られている。
そんな中でも、Firebase Authenticationで送信されるメールで使用するリンクは、Dynamic Linksとは別の仕組みで提供が続けられるということで、私のアプリでも移行作業を行っていた。
Table of Contents
- ハマった点
- このコードを実行する場所
ハマった点
全体の移行方法は https://firebase.google.com/docs/auth/android/email-link-migration に記載があるので省くが、ハマったのはこのステップだ。
- 新しいリンクを使用するようにプロジェクトを構成する
新しいドメインのリンクを処理する準備ができたら、Firebase Admin SDK を使用してメールリンクの生成方法を更新し、新しい Firebase Hosting ドメインを使用してリンクの生成を開始するようにバックエンドに指示します。
その下には、Firebase Admin SDKを用いたコードが書かれている。このSDKを使って書いたことがあるコードはWeb APIなど何らかのトリガーを持って実行されるものばかりで、設定など1回きりのコードを書いた経験はなかったため、どこに書いていいか分からずしばらく迷宮入りしていた。
このコードを実行する場所
結論から言うと、CloudShell上にNode.jsスクリプトを作成して実行する のが良さそうだ。
まずは、https://console.cloud.google.com より、Google Cloud Consoleにアクセスする。上部のボタンから、適用したいプロジェクトを選択する。
続いて、右上のボタンからCloud Shellを有効化する。
しばらく待つと、下部にターミナルが現れるが、パネル上部の「エディタを開く」をクリックする。
またもしばらく待つと、見慣れたVS Codeの画面が現れる。この画面でスクリプトを作成していく。
まず、開いているフォルダーに「migrate-links」など適当な名前でフォルダーを作成する。その中にpackage.jsonを作成し、以下のような中身にする。
{
"name": "migrate-links",
"type": "module"
}
続いて、左上の Terminal > New Terminal より、ターミナルを開く。
ターミナル上でnpmを使用し、firebase-adminパッケージをインストールする。
cd migrate-links
npm install firebase-admin
続いて、migrate-linksフォルダーにindex.jsファイルを作成し、以下のような中身にする。
import { initializeApp } from "firebase-admin/app";
import { getAuth } from "firebase-admin/auth";
initializeApp()
getAuth().projectConfigManager().updateProjectConfig({
mobileLinksConfig: {
domain: "HOSTING_DOMAIN",
},
})
※紛らわしいが、HOSTING_DOMAIN は、何らかの文字列のプレースホルダーではなく、その通りに入力する。
保存した後、ターミナルで実行する。
node index.js
何も表示されなければ成功。もとに戻す場合は、HOSTING_DOMAIN の部分を FIREBASE_DYNAMIC_LINK_DOMAIN に書き換えて実行する。適用先のプロジェクトが間違っている場合は、ターミナルからgcloud config set project <project id>
で変更できる。