上云无忧 > 文档中心 > 腾讯云云函数实战教程 - SCF + SMS 实现短信验证码功能
云函数 SCF
腾讯云云函数实战教程 - SCF + SMS 实现短信验证码功能

文档简介:
通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。目前,短信验证码广泛应用于用户注册、密码找回、登录保护、身份认证、随机密码、交易确认等应用场景。 本文以使用 云函数 开发一个短信验证码登录注册服务为例,帮助您了解如何实现短信验证码功能。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠
通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。目前,短信验证码广泛应用于用户注册、密码找回、登录保护、身份认证、随机密码、交易确认等应用场景。 本文以使用 云函数 开发一个短信验证码登录注册服务为例,帮助您了解如何实现短信验证码功能。
除云函数之外,还可通过使用 发送短信接口 实现。

准备工作

注册腾讯云 账号,并完成 企业实名认证
购买 短信套餐包。
准备短信签名归属方资质证明文件,详细的文件清单以及规范请参见 签名审核标准。 本文以使用企业营业执照作为资质证明文件为例。
了解短信正文内容审核规范,详情请参见 正文模板审核标准
已获取短信应用的 SDKAppID。

相关资料

Demo 源码
其他产品文档
私有网络产品文档
云数据库 Redis 产品文档
云函数产品文档

步骤1:配置短信内容

短信签名、短信正文模板提交后,我们会在2个小时左右完成审核,您可以 配置告警联系人 并设置接收模板和签名审核通知,便于及时接收审核通知。

步骤1.1:创建签名

1. 登录 短信控制台
2. 在左侧导航栏选择国内短信>签名管理,单击创建签名
3. 结合实际情况和 短信签名审核标准 设置以下参数:
参数
取值样例
签名用途
自用(签名为本账号实名认证的公司、网站、产品名等)
签名类型
App
签名内容
测试 Demo
证明类型
小程序设置页面截图
证明上传


4. 单击确定。 等待签名审核,当状态变为已通过时,短信签名才可用。

步骤1.2:创建正文模板

1. 登录 短信控制台
2. 在左侧导航栏选择国内短信>正文模板管理,单击创建正文模板
3. 结合实际情况和 短信正文模板审核标准 设置以下参数:
参数
取值样例
模板名称
验证码短信
短信类型
普通短信
短信内容
您的注册验证码:{1},请于{2}分钟内填写,如非本人操作,请忽略本短信。
4. 单击确定。 等待正文模板审核,当状态变为已通过时,正文模板才可用,请记录模板 ID。

步骤2:设置短信发送频率限制(可选)

注意
个人认证用户不支持修改频率限制,如需使用该功能,请将 “个人认证” 变更为 “企业认证”,具体操作请参见 实名认证变更指引
为了保障业务和通道安全,减少业务被刷后的经济损失,建议 设置发送频率限制。另外,您也可以结合使用 腾讯云验证码 以便最大程度地保护业务安全。 本文以短信的默认频率限制策略为例。
同一号码同一内容30秒内最多发送1条。
同一手机号一个自然日最多发送10条。

步骤3:配置私有网络和子网

默认情况下,云函数部署在公共网络中,只可以访问公网。如果开发者需要访问腾讯云的 TencentDB 等资源,需要建立私有网络来确保数据安全及连接安全。
1. 按需 规划网络
2. 创建私有网络,具体操作请参见 创建 VPC
注意
私有网络和子网的 CIDR 创建后不可修改。
参数
取值样例
所属地域
华南地区(广州)
名称
Demo VPC
IPv4 CIDR
10.0.0.0/16
子网名称
Demo 子网
IPv4 CIDR
10.0.0.0/16
可用区
广州三区

步骤4:配置 Redis 数据库

云数据库 Redis 实例需与 步骤3 配置私有网络的地域和子网的可用区保持一致。
1. 购买云数据库 Redis 实例,具体操作请参见 购买方式
参数
取值样例
计费模式
按量计费
地域
广州
数据库版本
Redis 4.0
架构
标准架构
网络
Demo VPC,Demo 子网
实例名
立即命名:Demo 数据库
购买数量
1

步骤5:新建云函数

云函数目前支持 Python、Node.js、PHP、Java 以及 Golang 语言开发,本文以 Node.js 为例。
1. 步骤3 创建的 VPC 所属地域中新建函数,具体操作请参见 编写函数
参数
取值样例
函数名称
Demo
运行环境
Nodejs 8.9
创建方式
模板函数:helloworld
2. 部署函数并配置触发方式为API网关触发器,具体操作请参见 部署函数

步骤6:启用公网访问配置(可选)

2020年4月29日前,部署在 VPC 中的云函数默认隔离外网。若需使云函数同时具备内网访问和外网访问能力,可通过启用公网配置方式实现。 登录 云函数控制台,选择函数服务,在云函数列表中单击目标函数名进入函数配置页。单击编辑,勾选公网访问并单击保存保存配置。
2020年4月29日及以后,新部署的云函数默认已启用公网访问,无需额外操作。

步骤7:部署短信 Demo

1. 前往 云函数控制台 并选择 SMS Demo 进行部署。

2. 高级配置中设置 Demo 的环境变量。

字段
说明
REDIS_HOST
Redis 数据库地址
REDIS_PASSWORD
Redis 数据库密码
SMS_TEMPLATE_ID
模板 ID,必须填写已审核通过的模板 ID。模板 ID 可登录 短信控制台 查看。
SMS_SIGN
短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 短信控制台 查看。注:国内短信为必填参数。
SMS_SDKAPPID
短信 SdkAppid 在 短信控制台 添加应用后生成的实际 SdkAppid,示例如1400006666。
3. 高级配置中设置与 Redis 数据库相同的 VPC 环境。

4. 高级配置中设置 SCF 运行角色权限。

需要在 访问管理 控制台给 SCF_QcsRole 角色添加短信 QcloudSMSFullAccess 权限

这样代码里就能获取到TENCENTCLOUD_SECRETID、TENCENTCLOUD_SECRETKEY、TENCENTCLOUD_SESSIONTOKEN环境变量了,发送短信的 sdk 会用到这些环境变量。
5. 点击完成,即可完成函数部署。
6. 创建函数 API网关触发器,请求该触发器地址,即可使用短信相关能力。

步骤8:功能使用及说明

验证码的时效性要求较高,您可以把验证码存在内存中或存在云数据库 Redis 中。以手机号作为 key,存储发送时间、验证码、验证次数、是否已验证过等信息。

功能

发送短信验证码

请求参数:
字段
类型
说明
method
string
请求方法,值为 getSms
phone
string
手机号,值为区号+手机号,例如86185662466**

校验验证码(登录)

请求参数:
字段
类型
说明
method
string
请求方法,值为 login
phone
string
手机号,值为区号+手机号,例如86185662466**
code
string
值为6位数字验证码

错误码

字段
说明
InValidParam
缺少参数
MissingCode
缺少验证码参数
CodeHasExpired
验证码已过期
CodeHasValid
验证码已失效
CodeIsError
请检查手机号和验证码是否正确
如有任何疑问,请联系 腾讯云短信小助手,将有专人为您解答。
相似文档
  • 搜索服务: 搜索服务广泛的存在于我们身边,例如我们生活中用的百度、工作中用的 wiki 搜索、淘宝时用的商品搜索等。这些场景的数据具有数据量大、结构化、读多写少等特点,而传统的数据库的事务特性在搜索场景并没有很好的使用空间,并且在全文检索方面速度慢(如 like 语句)。因此,Elasticsearch 应运而生。
  • 通过云函数定时触发器,您可以快速创建定时任务,无需提前购买计算资源。云函数定时触发器依赖于 Serverless 强大的弹性扩缩容能力,可提供稳定快捷的定时任务处理能力。
  • 操作场景: 本文使用了云函数 SCF,并在函数中通过 puppeteer 实现定时对页面内容进行采集、数据存储等任务。用户还可以通过函数执行数据爬取、定时签到、网页巡检等复杂的 Web 定时任务。
  • 操作场景: 在本示例中,我们用到了云函数 SCF ,并在函数中实现特定 URL 列表的拨测,对测试失败的 URL 发送告警邮件。我们可以给该函数配置一个定时触发器,按照每小时或者每天的频度定时执行。
  • 实现场景: 数据库备份通常是 DBA 每天要进行的工作。对数据库进行备份,可以在数据错误、数据库异常等有需要时及时进行数据回滚。最常用的方式是使用 crontab 定时任务,每日调用备份脚本进行数据库备份。而在备份脚本中,通常最方便使用的是 mysqldump 工具,导出表结构及表数据。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部