Supabase 集成
Supabase 是一个开源的 Firebase 替代方案,提供后端即服务(BaaS)功能,包括数据库、身份验证、存储和实时功能,帮助开发者快速构建应用。
Nexty 模板使用了 Supabase 的数据库和身份验证服务,其中获取 Supabase 的 API 密钥是模板的必要步骤。
安装和更新 Supabase CLI
安装 Supabase CLI:
# mac OS or Linux
brew install supabase/tap/supabase
# Windows
scoop bucket add supabase https://github.com/supabase/scoop-bucket.git
scoop install supabase
更新 Supabase CLI:
# mac OS or Linux
brew upgrade supabase
# Windows
scoop update supabase
更多 Supabase CLI 相关命令,请参考文档
数据库集成步骤
-
访问 Supabase 官网,你可以通过上一步创建的域名邮箱注册。
-
点击
New Project
创建新项目

记住这一步填写的密码

- 将环境变量赋值到
.env
或者.env.local
文件


- 初始化数据库
## 本地环境登录 supabase,根据提示按回车键,然后复制网页的随机码,粘贴到命令行,再回车即登录成功
pnpm db:login
## 连接数据库,会要求输入数据库密码,复制第2步记住的密码,粘贴到命令行,此时命令行是不会显示密码的,直接回车,会提示连接成功
pnpm db:link
## 自动初始化数据库和初始数据
pnpm db:update
提示:
- 在 1.x 版本提供的是手动初始化的方法,如果你想要手动初始化,仍然可以依次手动执行
supabase/migrations
下的所有 sql 文件- 从 2.x 版本开始推荐使用上面的自动初始化命令
在 Windows系统上,如果执行 pnpm db:update
遇到 “Invalid project ref format” 的错误,如图:

请打开 package.json
修改 db:update
命令:
"scripts": {
// "db:update": "npm run db:push && npm run db:gen-types" // 删掉这一行
"db:update": "npm run db:push ; npm run db:gen-types" // 改成这样
}
执行完成后,打开 Table Editor,你就能看到所有 Nexty 模板内置的表和定价数据。

打开 Database 模块,你能看到所有设计的 Indexes(索引)、Triggers(触发器)、Functions(RPC函数) 和 Policies(行安全策略)。

数据库更新方法
当你开始开发自己的功能的时候,无论新增数据表还是修改数据表,都可以使用这个命令创建新的表设计文件:
pnpm db:new-migration <update-name>
## eg: pnpm db:new-migration add_image_jobs_table
执行命令后,会在 supabase/migrations
生成一个新文件。
接着在新文件里写入新增或更新数据表的 sql。如果你不懂设计数据表,可以先和 AI 讨论功能,再让 AI 为你设计完整的 supabase 的数据表,并要求直接写入这个新文件。
然后执行这个命令更新数据库:
pnpm db:update
身份授权集成步骤
Nexty 模板默认支持 Supabase Auth 的 Google 授权、GitHub 授权和邮箱 Magic Link 三种登录方式。
注意:
- 邮箱登录请勿使用 QQ 邮箱调试,因为 QQ 邮箱会在后台访问链接,导致 Magic Link 失效。
- 建议 GitHub 登录优先于 Google 登录进行调试,因为配置比较简单,不易出错。
- 中国用户使用 clashX 时,在本地调试 Google 登录可能无法成功,这时候请打开 Tun 模式。
- 如果 Github 登录成功,只要确保 Google 配置正确,Google 登录肯定不会有问题。
邮箱登录
Supabase Auth 默认开启邮箱登录,不过默认设置的链接过期时间是1小时,一般建议修改为10分钟。
点击 Email
,打开邮箱设置面板

将 Email OTP Expiration
的值改为 600,然后点击 Save

Magic Link 登录方式有提供默认邮件通知模板,你可以进入 Email - Magic Link
重新设置自己的邮件通知模板

Github 登录
点击 Github
,打开 Github 设置面板

点击 Enable
按钮,开启 Github 登录,然后复制 Callback URL

打开 GitHub 的 OAuth Apps
页面,点击 New OAuth App
,开始创建新的 OAuth App
Homepage URL
可直接填写将来的生产地址,也可以暂时写开发环境的地址(如http://localhost:3000
), Authorization callback URL
填写刚才复制的 Callback URL

创建完成后,你就能看到 Client ID
,再点击 Generate a new client secret
按钮生成 Client Secret
,将它们复制到 Supabase Auth 的 Client ID
和 Client Secret
中。


Google 登录
点击 Google
,打开 Google 设置面板

点击 Enable
按钮,开启 Google 登录,然后复制 Callback URL

打开 Google Cloud Console,点击 New Project

输入项目名称,然后点击 Create

开始设置 Project 信息




创建 Client ID

Application type
选择Web application
Authorized JavaScript origins
本地开发需要填写http://localhost:3000
和http://localhost
Authorized redirect URIs
填写刚才复制的Callback URL


把生成的 Client ID
和 Client secret
复制到 Supabase Auth 的 Client ID
和 Client Secret
中。
同时把 Client ID
添加到环境变量 NEXT_PUBLIC_GOOGLE_CLIENT_ID
,这将使你的产品支持 Google One Tap 登录方式,帮助用户减少一次页面跳转。


再回到 Google Cloud Console,在 Data Access 页面勾选我们需要的权限

提示
如果要启用 Google One Tap,必须将
Client ID
添加到环境变量NEXT_PUBLIC_GOOGLE_CLIENT_ID
。
配置重定向 URL
为了让用户登录后重定向到正确的页面,我们还需要配置 URL Configuration
。
Site URL
是默认的重定向地址,如果没有指定 Redirect URL
,系统会自动将用户重定向到 SITE_URL
。如果已有生产地址,这里填写生产环境地址;如果域名还未启用,可暂时填写开发环境地址,等到发布生产环境时再修改为生产地址。
Redirect URL
用于指定允许在代码中使用 redirectTo
参数自定义的重定向地址。你可以同时填写生产环境和开发环境的地址,这样能够保证两套环境均能够正确重定向;但建议发布生产环境后,将开发环境的地址删除。

获取 API 密钥
最后一步,也是最重要的一步,获取 API 密钥。
- 在
Project Settings - Data API
页面,把URL
复制到环境变量NEXT_PUBLIC_SUPABASE_URL
- 在
Project Settings - API Keys
页面,把anon key
和service_role key
复制到环境变量NEXT_PUBLIC_SUPABASE_ANON_KEY
和SUPABASE_SERVICE_ROLE_KEY


# .env.local or .env
NEXT_PUBLIC_SUPABASE_URL=""
NEXT_PUBLIC_SUPABASE_ANON_KEY=""
SUPABASE_SERVICE_ROLE_KEY=""
NEXT_PUBLIC_GOOGLE_CLIENT_ID=""
结语
Nexty 模板使用的所有第三方服务,只有 Supabase 是必须的。也就是说,如果你现在就想启动源码仓库,可以暂时跳过其他第三方平台的配置,从启动源码仓库章节继续阅读。