Supabase : 新規登録時の OAuth 認証時に必要なトリガー関数
どうもです。私は普段フロントエンドをやっているので、正直バックエンドとか PostgreSQL とか全然分からない。
でも、Supabase があればブラウザで直感的に操作できるし、それなら何とかなるだろうってことで、OAuth 認証のトリガーを実装してみました。
バックエンドを触るのはドキドキでしたが、意外と Supabase のおかげで簡単にできたので、備忘録として残しておこうと思います。
Supabase で新規登録時の OAuth 認証を動かすには、次の 2 つが必要です。
- トリガー関数(Database Functions)
- トリガー(Database Triggers)
トリガー関数とトリガーの違い
簡単に言うと、トリガー関数は「特定の処理をどうやるか」を決める部分で、トリガーは「いつその処理をやるか」を決める部分です。トリガー関数を作って、トリガーでタイミングを設定する、そんな感じで使います。
トリガー関数とは
トリガー関数は、何かしらのデータベース操作(例えば新規ユーザーの登録)が行われたときに、決まった処理を実行するためのコードです。例えば、新しいユーザーが登録されたら、そのユーザーの情報を他のテーブルにも自動で追加する、といった動作を設定します。
ちなみに、Database Triggers は Supabase の管理画面で「Database のTriggers の プルダウンの 'auth'」から確認できます。
注意! トリガー関数を変更した場合、一度トリガーを削除してから再作成しないと変更が反映されません。
手順
- 必須:既存のトリガーを削除する
- 新しいトリガー関数を作成する
- 新しいトリガーを作成する
トリガー関数を変更するたびにトリガーを削除して再作成する必要があります。ちょっと面倒ですが、最新のトリガー関数を適用するためには必要な手順です。
トリガーの削除
ここからは、一例です。
まずは、既存のトリガーを削除します。Functions のページからではなく、「SQL エディター」で以下のコードを実行して、既存のトリガーを削除してください。
トリガー関数を GUI で作成
次に、新しいトリガー関数を作成します。GUI で行う場合は、「Database の Database Functions」で「Create a new function」を選択し、以下のコードを入力します。
トリガー関数を SQL エディターで編集する
Functions からの編集ではなく、「SQL エディター」で新しいトリガー関数を作成することもできます。例えば、以下のコードでトリガー関数を作成します。
新しいトリガーを作成する
最後に、新しいトリガーを作成します。これも「SQL エディター」で行います。
例えば他にも、メールで認証する場合はこんな感じです:
もしくは、一般的な新しいユーザー向けにはこちら:
認証に失敗する場合
認証がうまくいかない場合は、Supabase の管理画面で「Logs の Auth」を確認してみましょう。ここに失敗した原因が書かれているので、それを手がかりにデバッグしましょう。
おわりに
Supabase のトリガーは、少し面倒な手順もありますが、OAuth 認証のようなバックエンドの作業をグッと楽にしてくれます。今回はトリガー関数とトリガーの違い、そしてその設定方法について紹介しました。もしバックエンドの設定が不安でも、Supabase のシンプルな操作を試してみてください。きっと思っているより簡単に、便利な機能を作ることができますよ。