You need to enable JavaScript to run this app.
文档中心
AI 原生 BaaS 平台 Supabase 版

AI 原生 BaaS 平台 Supabase 版

复制全文
下载 pdf
使用 Authentication
设置基于火山短信服务的账号注册和登录
复制全文
下载 pdf
设置基于火山短信服务的账号注册和登录
本文介绍通过 Supabase 控制台和 Admin API 配置基于火山短信服务的账号注册和登录的操作流程。​
前提条件​
  • 已创建使用 Supabase 引擎的 Workspace 且 Workspace 的状态为运行中。关于创建 Workspace 的更多详细信息,请参见创建 Workspace。​
  • 已通过目标 Workspace 成功登录 Supabase 控制台。关于登录控制台的详细信息,请参见登录 Supabase 控制台。​
  • 已获取 SUPABASE_BASE_URL、SERVICE_ROLE_KEY 和 SUPABASE_ANON_KEY。关于获取变量的详细信息,请参见获取变量。​
注意​
创建 Supabase 用到的短信模版时,模板变量只支持 ${code},模板类型必须是 CN_OTP 或 I18N_OTP。参考 火山短信服务-SendSmsVerifyCode 中的参数说明。​
在 Supabase 控制台查询和修改配置​
  1. 在 Supabase 控制台单击左侧的 Authentication,进入 Authentication 页面。​
  1. 在 Authentication 页面,单击 Configuration > Sign In / Providers,进入 Sign In / Providers 页面。​
  1. 在 Sign In / Providers 页面,单击 Phone,进入 Phone 的配置页面。​
  1. 在 Phone 的配置页面,打开 Enable Phone provider 开关,并配置火山短信相关参数。主要配置项如下表所示,部分参数含义参见:火山短信服务-SendSmsVerifyCode 接口。​
​
Dashobard 配置项名称​
配置项 Key​
配置项 Value 类型​
是否必填​
配置项说明​
Enable Phone Provider​
​
EXTERNAL_PHONE_ENABLED​
bool​
是​
是否开启短信注册登录。取值:​
  • true:是(开关打开)。​
  • false:否(开关关闭)。​
SMS Provider​
SMS_PROVIDER​
string​
是​
短信服务提供商。取值 volcsms:火山短信。​
VolcSMS Access Key​
SMS_VOLCSMS_AK​
string​
是​
火山账号的 AccessKey。​
VolcSMS Secret Key​
SMS_VOLCSMS_SK​
string​
是​
火山账号的 SecretKey。​
VolcSMS Account ID​
SMS_VOLCSMS_SMS_ACCOUNT​
string​
是​
火山短信的消息组 ID。​
VolcSMS Template ID​
SMS_VOLCSMS_TEMPLATE_ID​
​
string​
是​
火山短信的模板 ID。​
模板变量只支持 ${code},模板类型必须是 CN_OTP 或 I18N_OTP。参见 火山短信服务-SendSmsVerifyCode 中的参数说明。​
VolcSMS Sign​
SMS_VOLCSMS_SIGN​
string​
是​
火山短信的签名,参考:火山短信服务-短信签名。​
SMS Code Expiration​
SMS_VOLCSMS_CODE_EXPIRE​
int​
是​
短信验证码过期时间,单位为秒。​
SMS Code Length​
SMS_VOLCSMS_CODE_NUM​
int​
是​
短信验证码长度。​
Max Verification Attempts​
SMS_VOLCSMS_CODE_TRY​
int​
是​
短信验证最大次数。​
Enable phone confirmations​
SMS_AUTOCONFIRM​
bool​
是​
通过手机号注册时是否无需短信验证。取值:​
  • true: 无需验证(开关关闭),默认值。​
  • false:需要验证(开关打开)。​
​
通过 Admin API 查询和修改配置​
上述参数可以通过 Auth 模块的 Admin API /auth/v1/config 进行查询和修改配置。​
  • 查询配置的示例​
​
curl -X GET $SUPABASE_BASE_URL/auth/v1/config \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json"​
​
  • 修改配置的示例,其中 body 为上节表格中的 配置项 Key 和 配置项 Value 组成的 JSON Map​
​
curl -X PATCH $SUPABASE_BASE_URL/auth/v1/config \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" \​
-d '{​
"EXTERNAL_PHONE_ENABLED": true,​
"SMS_PROVIDER": "volcsms",​
"SMS_VOLCSMS_AK": "test-ak",​
"SMS_VOLCSMS_SK": "test-sk",​
...​
}'​
​
示例——通过 Supabase Client SDK 进行手机号注册和登录的示例​
  • 手机号注册的示例​
​
import { createClient } from '@supabase/supabase-js'​
const supabase = createClient(​
"<SUPABASE_BASE_URL>",​
"<SUPABASE_ANON_KEY>")​
​
// 手机号 注册​
async function signUp() {​
const { data, error } = await supabase.auth.signUp({​
phone: '+8613911111111',​
password: 'password123'​
})​
​
if (error) {​
console.log('发送注册短信验证码失败:', error.message)​
return​
}​
console.log('发送注册短信验证码成功', data)​
}​
​
// 校验短信验证码​
async function verifyOtp() {​
const { data, error } = await supabase.auth.verifyOtp({​
phone: '+8613911111111',​
token: '123456', // 用户输入的短信验证码​
type: 'sms',​
})​
​
if (error) {​
console.log('注册失败:', error.message)​
return​
}​
console.log('注册成功', data.user)​
}​
​
  • 手机号+密码登录的示例​
​
import { createClient } from '@supabase/supabase-js'​
const supabase = createClient(​
"<SUPABASE_BASE_URL>",​
"<SUPABASE_ANON_KEY>")​
​
// 手机号+密码 登录​
async function signIn() {​
const { data, error } = await supabase.auth.signInWithPassword({​
phone: '+8613911111111',​
password: 'password123'​
})​
​
if (error) {​
console.log('登录失败:', error.message)​
return​
}​
console.log('登录成功', data.user)​
}​
​
  • 手机号 + 短信验证码(OTP)登录的示例​
​
import { createClient } from '@supabase/supabase-js'​
const supabase = createClient(​
"<SUPABASE_BASE_URL>",​
"<SUPABASE_ANON_KEY>")​
​
// 手机号+短信验证码(OTP) 登录​
async function signInWithOtp() {​
const { data, error } = await supabase.auth.signInWithOtp({​
phone: '+8613911111111'​
})​
​
if (error) {​
console.log('发送短信验证码失败:', error)​
return​
}​
console.log('发送短信验证码成功')​
}​
​
// 校验短信验证码(OTP)​
async function verifyOtp() {​
const { data, error } = await supabase.auth.verifyOtp({​
phone: '+8613911111111',​
token: '123456', // 用户输入的短信验证码​
type: 'sms',​
})​
​
if (error) {​
console.log('登录失败:', error.message)​
return​
}​
console.log('登录成功', data.user)​
}​
​
最近更新时间:2026.03.30 11:08:50
这个页面对您有帮助吗?
有用
有用
无用
无用