腾讯云短信 nodejs 接入, 通过验证码修改手机示例
腾讯云短信 nodejs 接入, 通过验证码修改手机示例
参考:
腾讯云短信文档
国内短信快速入门
qcloudsms Node.js SDK
文档中心>短信>错误码
nodejs sdk 使用示例
const QcloudSms = require('qcloudsms_js');
const cfg = {
appid: 1400123123, // SDK AppID 以1400开头
appkey: '...', // 短信应用 SDK AppKey
templateId: 402790, // 短信模板 ID,需要在短信控制台中申请
smsSign: '我的过去公众号', // NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请
}
// 简单封装一下, 向指定手机下发验证码
// sendCode('18212341234', 1234) // 发送短信
function sendCode (phone, code, time = 10) {
phone = typeof(phone) === 'object' ? phone : [phone]
const qcloudsms = QcloudSms(cfg.appid, cfg.appkey) // 实例化 QcloudSms
const msender = qcloudsms.SmsMultiSender()
msender.sendWithParam(86,
phone, // 一个数组
cfg.templateId, // 模版 id
[code, time], // 正文中的参数值
cfg.smsSign, // 签名 未提供或者为空时,会使用默认签名发送短信
'', '',
(err, res, resData) => { // 回调函数
err && console.log('err: ', err)
console.log('request data: ', res.req)
console.log('response data: ', resData)
})
}
请求及回调
这里的请求及回调与 sdk 中的是一样的。
参考:
文档中心>短信>API 文档>短信API>指定模板群发短信
URL 示例
POST https://yun.tim.qq.com/v5/tlssmssvr/sendmultisms2?sdkappid=xxxxx&random=xxxx
请求
{
"ext": "",
"extend": "",
"params": [
"验证码",
"1234",
"4"
],
"sig": "...",
"sign": "腾讯云",
"tel": [
{
"mobile": "13788888888",
"nationcode": "86"
},
{
"mobile": "13788888889",
"nationcode": "86"
}
],
"time": 1457336869,
"tpl_id": 19
}
回调
{
"result": 0,
"errmsg": "OK",
"ext": "",
"detail": [
{
"errmsg": "OK",
"fee": 1,
"mobile": "13788888888",
"nationcode": "86",
"result": 0,
"sid": "xxxxxxx"
},
{
"errmsg": "OK",
"fee": 1,
"mobile": "13788888889",
"nationcode": "86",
"result": 0,
"sid": "xxxxxxx"
}
]
}
使用验证码修改手机
API 发送验证码
返回验证码及有效时间的加密为字符串.
query: {phone}
response: {token}
phoneCode({
body: {},
query: {
phone: '18212341234',
}
})
async function phoneCode (ctx) {
let {phone} = ctx.query
let code = '1234' // 生成验证码用于测试
if(process.env.PRO_ENV === 'pro') { // 如果是正式环境, 修改验证码为随机
code = String(Math.random()).slice(-4)
sms.sendCode(phone, code) // 发送验证码
}
let token = jwt.sign(
{ // 加密的 json 信息
phone,
code,
iat: Date.now() + 1000 * 60 * 10, // 过期时间设置为 10 分钟后
},
config.jwt.secret, // secret 为密匙
)
ctx.body = {token: token} // 返回加密后的内容
}
API 修改手机号
解密加密字符串, 判断是否与用户填写的对应.
body: {
token,
phone,
code,
}
response: {...}
phoneChange({
body: {
token: '...',
phone: '18212341234',
code: '1111',
},
query: {},
})
async function phoneChange(ctx) {
const userModel = models.user // 数据库中的 user 表
const { token, phone, code } = ctx.body
let decoded = jwt.decode(token, config.secret) // 使用 secret 密匙解密 token
let { creator_id } = ctx.state || {}
if(!creator_id) {return console.log('非法请求')}
const apiUser = await userModel.findOne({ where: { id: creator_id }}) // 查询当前发起请求的用户
if (apiUser && decoded) {
if(decoded.iat < Date.now()) {return console.log('验证码已过期')}
if(decoded.phone !== phone) {return console.log('接收验证码的手机号与要修改的手机号不匹配')}
if(decoded.code !== code) {return console.log('验证码错误')}
const bindUser = await userModel.findOne({where: {bind_phone: phone}, raw: true}) // 查询是否存在已绑定
if(bindUser) {return console.log('该手机号已有绑定用户')}
apiUser.bind_phone = phone // 修改为新手机并保存
return ctx.body = await apiUser.save({ new: true })
} else {
return console.log('该用户不存在')
}
}
腾讯云短信 nodejs 接入, 通过验证码修改手机示例的更多相关文章
- ThinkPHP5——接入腾讯云短信API
接入腾讯云短信API相当简单,最重要的是第一次使用腾讯云短信的话有100条免费短信可以测试,对于开发人员是足够了,下面我就教大家接入腾讯云短信. 第一步:准备工作 首先要在腾讯云短信申请短信签名与短信 ...
- 云-腾讯云-短信:短信(SMS)
ylbtech-云-腾讯云-短信:短信(SMS) 快速稳定.简单易用.触达全球的短信服务,支持国内短信.语音短信与国际短信 1.返回顶部 1. 腾讯云短信 SMS 简介 腾讯云短信(Short Mes ...
- php腾讯云短信验证码
腾讯云短信控制台:https://console.cloud.tencent.com/sms 腾讯云短信 PHP SDK:https://github.com/qcloudsms/qcloudsms_ ...
- 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习
反射实现Model修改前后的内容对比 在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...
- 基于tp3.2的腾讯云短信验证码的实现
新手小白在公司要完成短信验证码注册功能,最初由于没有经验,网上的教程又不是很全,便参考着官方API文档,进行开发 直接进入正题:使用composer下载腾讯云短信接口(记得添加依赖).在项目目录下新建 ...
- java实现发短信功能---腾讯云短信
目录 java实现发短信功能 前言 开发环境 腾讯云 ---短信 代码 效果 结束语 java实现发短信功能 前言 如今发短信功能已经成为互联网公司的标配,本篇文章将一步步实现java发送短信 考察了 ...
- Python 腾讯云短信,发送手机验证码
1.安装包 pip install qcloudsms_py 2.准备好相关参数 腾讯云短信每个月赠送100条短信,申请一个应用,获取appid,然后创建短信签名,然后创建正文模版 3.发送短信 我们 ...
- python调用腾讯云短信接口
目录 python调用腾讯云短信接口 账号注册 python中封装腾讯云短信接口 python调用腾讯云短信接口 账号注册 去腾讯云官网注册一个腾讯云账号,通过实名认证 然后开通短信服务,创建短信应用 ...
- 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题
springboot集成腾讯云短信服务: (1)导入依赖 <dependency> <groupId>org.springframework.boot</groupId& ...
随机推荐
- 如何查看已购买的office密钥
登陆这个网址https://account.microsoft.com/services/ 声明 :转载请注明来源sogeisetsu.cnblogs.com
- KClass与函数引用详解
继续学习Kotlin反射相关的东东. KClass: 在上一次是通过类来获取它的KClass对象: 那如果是一个对象呢?与这个对象对应的类的KClass对象又是如何获取的呢?像Java也是一样有相关机 ...
- C# 验证控件的使用RequiredFieldValidator&CompareValidator
使用验证控件可以向服务器提交表单数据时验证表单内容,下面以RequiredFieldValidator和CompareValidator为例说明验证控件的用法 RequiredFieldValidat ...
- 如果在使用谷歌的gson的时候,在返回时间类型的数据的时候,
可能会出现在long类型的时间后面多3个0 如下图所示 可以自己创建一个json序列化的类 public class Date2LongSerializer extends JsonSerialize ...
- 与你一起学习MS Project——基础篇:Project基础应用
为了更清晰容易地熟悉掌握Project的基础应用,我们在基础篇中一起来学习掌握在Project中如何做进度计划.资源计划.成本计划以及跟踪项目的执行情况并生成所需的项目报表. 一.进度计划 这里,首先 ...
- tensorflow API _ 4 (Logging with tensorflow)
TensorFlow用五个不同级别的日志信息.为了升序的严重性,他们是调试DEBUG,信息INFO,警告WARN,错误ERROR和致命FATAL的.当你配置日志记录在任何级别,TensorFlow将输 ...
- FFT版题 [51 Nod 1028] 大数乘法
题目链接:51 Nod 传送门 数的长度为10510^5105,乘起来后最大长度为2×1052\times10^52×105 由于FFT需要把长度开到222的次幂,所以不能只开到2×1052\time ...
- 题目一:编写一个类Computer,类中含有一个求n的阶乘的方法
作业:编写一个类Computer,类中含有一个求n的阶乘的方法.将该类打包,并在另一包中的Java文件App.java中引入包,在主类中定义Computer类的对象,调用求n的阶乘的方法(n值由参数决 ...
- H5页面中判断是安卓手机还是ios手机的方法;APP页面中嵌套的H5跳转到APP其他页面的方法。
(一).在H5页面中,可以直接利用如下的方法来进行判断是安卓还是ios. var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linu ...
- 使用vue+mintui 开发省市区功能
做移动端的都知道 经常会有省市区这种三级联动的功能 今天研究了一下午~ 1.准备工作 vue+mintui+省市区的json数据 下载地址:https://github.com/chzm/addres ...