Login with Notion
To enable Notion Auth for your project, you need to set up a Notion Application and add the Application OAuth credentials to your Supabase Dashboard.
Overview#
Setting up Notion logins for your application consists of 3 parts:
- Create and configure a Notion Application Notion Developer Portal
- Retrieve your OAuth client ID and OAuth client secret and add them to your Supabase Project
- Add the login code to your Supabase JS Client App
Create your notion integration#
- Go to developers.notion.com.
- Click "View my integrations" and login.

- Once logged in, go to notion.so/my-integrations and create a new integration.
- When creating your integration, ensure that you select "Public integration" under "Integration type" and "Read user information including email addresses" under "Capabilities".
- You will need to add a redirect uri, see Add the redirect uri
- Once you've filled in the necessary fields, click "Submit" to finish creating the integration.

Add the redirect URI#
- After selecting "Public integration", you should see an option to add "Redirect URIs".

You can retrieve the redirect uri with the following steps:
- Go to your Supabase Project Dashboard.
- Click on the
Settingsicon at the bottom of the left sidebar. - Click on
APIin the list. - Under Config / URL you'll find your API URL, you can click
Copyto copy it to the clipboard. - Add
/auth/v1/callbackto the end of that to get your fullOAuth Redirect URI.
Your redirect uri should look like the following: https://<project-ref>.supabase.co/auth/v1/callback
Add your Notion credentials into your Supabase Project#
- Once you've created your notion integration, you should be able to retrieve the "OAuth client ID" and "OAuth client secret" from the "OAuth Domain and URIs" tab.

- Go to your Supabase Project Dashboard
- In the left sidebar, click the
Authenticationicon (near the top) - Click
Settingsfrom the list to go to theAuthentication Settingspage - Under
External OAuth ProvidersturnNotion Enabledto ON - Enter the "OAuth client ID" and "OAuth client secret" obtained in the
client idandclient secretfields. - Click
Save
Add login code to your client app#
When your user signs in, call signInWithOAuth() with notion as the provider:
1async function signInWithNotion() {
2 const { data, error } = await supabase.auth.signInWithOAuth({
3 provider: 'notion',
4 })
5}
When your user signs out, call signOut() to remove them from the browser session and any objects from localStorage:
1async function signout() {
2 const { error } = await supabase.auth.signOut()
3}