⚡
supabaseのローカル開発環境でサードパーティー認証を使用する方法
こちらはgithub認証の実装方法のドキュメントである。本番環境なら問題ないが、ローカルのsupabaseダッシュボードは機能が少なく、auth/providersというページが存在しないので困る。
以下、ローカル開発環境でのサードパーティー認証実装の流れを説明する。
1. コールバックurlを用意する
- 本番環境なら
https://<project-ref>.supabase.co/auth/v1/callback
だが、ローカルは通常http://localhost:54321/auth/v1/callback
で良い。
2. githubのOAuthアプリを作成する。
- githubにログインし、Settings/Developer settings/OAuth Appsより、OAuth Appを新規作成する。
-
Application name
,Homepage URL
,Authorization callback URL
を入力する。
- アプリケーションを作成し設定を保存したら、
Client ID
とcrient secret
をコピーする。
3. サードパーティー認証を有効にする。
- エディタを開く。
supabase init
した際にsupabase/config.tomlが作成されているはずなので、ファイルを開く。 - config.tomlの下部に例としてappleの認証が無効化されているはずである。
# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin`, `notion`, `twitch`,
# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
[auth.external.apple]
enabled = false
client_id = ""
secret = ""
- このあたりに、目的のサードパーティーを有効化する記述を加える。
[auth.external.github]
enabled = true
client_id = "your-client-id"
secret = "your-client-secret"
supabase stop
とsupabase init
を実行する。
4. 最後に、余談だが、認証のチュートリアルに従ってprofileテーブルを作成している場合、このタイミングでmigrationファイル内のhandle_new_user()
が存在しないというエラーが出た。migrationファイル内のhandle_new_user()
の定義場所を実行箇所よりも上に移動することで解決された。
参考
Discussion