tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表
文档云函数实践教程短信 SMS SCF + SMS 实现短信验证码功能

SCF + SMS 实现短信验证码功能

PDF
聚焦模式
字号
最后更新时间: 2024-12-02 21:14:29
通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。目前,短信验证码广泛应用于用户注册、密码找回、登录保护、身份认证、随机密码、交易确认等应用场景。 本文以使用 云函数 开发一个短信验证码登录注册服务为例,帮助您了解如何实现短信验证码功能。
除云函数之外,还可通过使用 发送短信接口 实现。

准备工作

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

相关资料

其他产品文档

步骤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 配置私有网络的地域和子网的可用区保持一致。
购买云数据库 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
请检查手机号和验证码是否正确
如有任何疑问,请联系 腾讯云短信小助手,将有专人为您解答。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈