自定义短信服务商配置指南
功能概述
云开发身份认证支持手机号短信验证码登录方式。使用短信验证码登录前,需要接入短信服务商来发送验证码短信。
支持接入腾讯云短信服务商(TENCENT_CN 国内、TENCENT_INTL 国际/港澳台),也可以通过云函数接入其他短信服务商。
配置完成后,用户在注册/登录时触发的验证码短信,将通过您配置的短信服务商发出,您可自主控制签名、模板及每日发送上限。
前提条件
在调用配置接口前,您需要在腾讯云完成以下准备工作:
第一步:开通腾讯云短信服务
- 登录 腾讯云短信控制台,同意服务协议后开通短信服务。
- 进入应用管理 > 应用列表,点击创建应用,填写应用名称,创建完成后记录 SdkAppId。
如果短信服务与云开发环境使用同一腾讯云账号,可通过 CAM 授权方式接入,无需提供 SecretId 和 SecretKey。
如果使用跨账号的短信服务,需前往 API 密钥管理,创建或查看 SecretId 和 SecretKey。
SecretKey 属于敏感凭证,请妥善保管,避免泄露。
第二步:申请短信签名
短信签名将显示在发送给用户的短信开头,例如【腾讯云】。请前往腾讯云短信控制台申请短信签名,审核通过后记录签名内容备用。
- 国内短信签名申请:管理国内短信签名
- 国际/港澳台短信签名申请:管理国际/港澳台短信签名
第三步:申请短信模板
短信模板定义了验证码短信的正文内容,变量部分使用占位符 {1}、{2} 表示。请前往腾讯云短信控制台申请短信模板,审核通过后记录**模板 ID(TemplateId)**备用。
短信模板示例:
您的验证码为:{1},{2} 分钟内有效,请勿泄露给他人。
模板申请及审核标准请参考:短信正文模板审核标准
完成准备后,您应已获取以下信息
| 参数 | 说明 | 获取路径 |
|---|---|---|
SdkAppId | 短信应用 ID | 短信控制台 > 应用管理 |
SecretId | API 密钥 ID(跨账号场景需要) | API 密钥管理 |
SecretKey | API 密钥(跨账号场景需要) | API 密钥管理 |
SignName | 短信签名内容 | 短信控制台 > 签名管理(审核通过后) |
TemplateId | 短信模板 ID | 短信控制台 > 正文模板管理(审核通过后) |
API 接口说明
接口信息
| 项目 | 说明 |
|---|---|
| 接口名称 | ModifyLoginConfig(修改登录策略) |
| 请求域名 | tcb.tencentcloudapi.com |
| API 版本 | 2018-06-08 |
| HTTP 方法 | POST |
| 频率限制 | 20 次/秒 |
输入参数
顶层参数
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
EnvId | String | 是 | 云开发环境 ID |
PhoneNumberLogin | Boolean | 是 | 手机号短信登录开关 |
EmailLogin | Boolean | 是 | 邮箱登录开关 |
UserNameLogin | Boolean | 是 | 用户名密码登录开关 |
AnonymousLogin | Boolean | 是 | 匿名登录开关 |
SmsVerificationConfig | Object | 否 | 短信验证码发送通道配置,见下方详细说明 |
SmsVerificationConfig(短信通道配置)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
Type | String | 否 | 短信发送通道类型。template:使用自定义短信服务商模板(腾讯云短信使用此值) |
SmsDayLimit | Integer | 否 | 单个手机号每日发送上限,默认 30 次,-1 表示不限制 |
TemplateProvider | Object | Type 为 template 时必填 | 服务商短信模板配置,见下方 SMSProviderTemplateConfig 说明 |
SMSProviderTemplateConfig(服务商模板配置)
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
Vendor | String | 是 | 短信服务商。TENCENT_CN:腾讯云短信(国内);TENCENT_INTL:腾讯云短信(国际/港澳台) |
TemplateId | String | 是 | 短信模板 ID(审核通过的模板) |
SdkAppId | String | 否 | 腾讯云短信应用 ID |
SignName | String | 否 | 短信签名内容(审核通过的签名) |
SecretId | String | 否 | 腾讯云 API 密钥 ID(跨账号场景需要,同账号可使用 CAM 授权) |
SecretKey | String | 否 | 腾讯云 API 密钥(跨账号场景需要,同账号可使用 CAM 授权) |
SenderId | String | 否 | 发送方 ID,国际短信部分场景需填写 |
TemplateExtendParam | Array of Object | 否 | 模板自定义扩展参数,见下方 SMSTemplateParams 说明 |
SMSTemplateParams(模板扩展参数)
| 参数名 | 类型 | 说明 |
|---|---|---|
Key | String | 参数键(使用命名占位符时填写) |
Value | String | 参数值 |
请求示例
配置腾讯云国内短信(TENCENT_CN)
{
"EnvId": "your-env-id",
"PhoneNumberLogin": true,
"EmailLogin": false,
"UserNameLogin": false,
"AnonymousLogin": false,
"SmsVerificationConfig": {
"Type": "template",
"SmsDayLimit": 100,
"TemplateProvider": {
"Vendor": "TENCENT_CN",
"SdkAppId": "1400000000",
"SecretId": "AKIDxxxxxxxx",
"SecretKey": "xxxxxxxxxxxxxxxx",
"SignName": "云开发",
"TemplateId": "123456"
}
}
}
配置腾讯云国际/港澳台短信(TENCENT_INTL)
{
"EnvId": "your-env-id",
"PhoneNumberLogin": true,
"EmailLogin": false,
"UserNameLogin": false,
"AnonymousLogin": false,
"SmsVerificationConfig": {
"Type": "template",
"SmsDayLimit": 100,
"TemplateProvider": {
"Vendor": "TENCENT_INTL",
"SdkAppId": "1400000000",
"SecretId": "AKIDxxxxxxxx",
"SecretKey": "xxxxxxxxxxxxxxxx",
"SignName": "CloudBase",
"TemplateId": "789012"
}
}
}
输出参数
| 参数名 | 类型 | 说明 |
|---|---|---|
RequestId | String | 唯一请求 ID,用于问题定位 |
响应示例
{
"Response": {
"RequestId": "70b8908d-5c99-4a20-be23-f84aff0bfd37"
}
}
注意事项
-
签名和模板需提前审核通过:调用接口前,请确保腾讯云短信的签名和模板均已通过审核,否则短信发送将失败。
-
国内与国际场景分开配置:国内短信和国际/港澳台短信的 SignName、TemplateId 分别管理,请根据您的用户群体选择对应的配置。
-
SmsDayLimit 合理设置:建议根据业务量设置每日上限,防止异常刷量,同时避免设置过低影响正常用户登录。
-
SecretKey 安全存储:请勿将 SecretKey 硬编码在前端代码中,建议通过后端服务调用接口。
-
配置即时生效:接口调用成功后,配置立即生效,所有使用该云开发环境的用户登录时均将使用新的短信通道。