Firebase Authentication トリガー
Cloud Run functions は、その関数と同じ Google Cloud プロジェクトの Firebase Authentication のイベントによってトリガーできます。これには、ユーザーの作成やユーザーの削除などのイベントが含まれます。たとえば、アプリでアカウントを作成したばかりのユーザーに登録完了の通知メールを送信できます。
イベントの種類
Firebase Authentication は、create
と delete
イベントに応じて関数をトリガーできます。
イベントタイプ | トリガー |
---|---|
providers/firebase.auth/eventTypes/user.create |
ユーザー アカウントが作成されるとトリガーされます。 |
providers/firebase.auth/eventTypes/user.delete |
ユーザー アカウントが削除されるとトリガーされます。 |
ユーザーの作成
Firebase アカウントでは、以下の場合に Cloud Run functions のユーザー作成イベントがトリガーされます。
ユーザーがメール アカウントとパスワードを作成したとき。
ユーザーがフェデレーション ID プロバイダを使用して初めてログインしたとき。
デベロッパーが Firebase Admin SDK を使用してアカウントを作成したとき。
ユーザーが新しい匿名 Auth セッションに初めてログインしたとき。
ユーザーの削除
ユーザーの削除時にトリガーするように関数を構成することもできます。
イベントの構造
イベントデータは、UserRecord
オブジェクトとして指定されます。
以下に、パスワード ベースのアカウントの作成イベントの例を示します。
{ "email": "me@example.com", "metadata": { "createdAt": "2018-10-19T19:29:16Z" }, "uid": "XXXXX" }
このオブジェクトの一部のプロパティは、特定の認証方法を使用する場合にのみ定義されます。たとえば、パスワード ベースのアカウント イベントは、ユーザーのメールアドレスを含む email
プロパティを定義します。プロジェクトに固有のユーザー ID を含む uid
プロパティは常に定義されます。
サンプルコード
Node.js
Python
Go
Java
C#
Ruby
PHP
関数のデプロイ
関数をデプロイするには、Firebase Authentication が構成されているイベントタイプとプロジェクトを指定する必要があります。Google Cloud コンソールには [イベントタイプ] のフィールドが 1 つ表示されます。これは、プロジェクトが関数を含むプロジェクトと同じであると想定されるためです。
コマンドラインの場合は、この 2 つのパラメータを指定するために特定の文字列を使用する必要があります。次の gcloud
コマンドは、ユーザーの create
イベントによってトリガーされる関数をデプロイします。
gcloud functions deploy FUNCTION_NAME \ --no-gen2 \ --entry-point ENTRY_POINT \ --trigger-event providers/firebase.auth/eventTypes/user.create \ --trigger-resource YOUR_PROJECT_ID \ --runtime RUNTIME
引数 | 説明 |
---|---|
FUNCTION_NAME |
デプロイする Cloud Run functions の登録名。ソースコード内の関数の名前にすることも、任意の文字列にすることもできます。FUNCTION_NAME が任意の文字列の場合は、--entry-point フラグを含める必要があります。 |
--entry-point ENTRY_POINT |
ソースコード内の関数またはクラスの名前。FUNCTION_NAME を使用して、デプロイ時に実行する関数をソースコードに指定していない場合は省略できます。その場合は、--entry-point を使用して実行可能関数の名前を指定する必要があります。 |
--trigger-event NAME |
関数をトリガーするイベントタイプの名前。この場合、上記のように create または delete のいずれかにする必要があります。 |
--trigger-resource NAME |
関数と Firebase Authentication を含むプロジェクトのプロジェクト ID(この例では YOUR_PROJECT_ID )。 |
--runtime RUNTIME |
使用しているランタイムの名前。網羅的なリストについては、gcloud リファレンスをご覧ください。 |