supabaseのローカル開発環境でサードパーティー認証を使用する方法

2023/04/16に公開

こちらは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 IDcrient 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"

4. 最後に、supabase stopsupabase initを実行する。

余談だが、認証のチュートリアルに従ってprofileテーブルを作成している場合、このタイミングでmigrationファイル内のhandle_new_user()が存在しないというエラーが出た。migrationファイル内のhandle_new_user()の定義場所を実行箇所よりも上に移動することで解決された。

参考

https://github.com/orgs/supabase/discussions/2818

Discussion