美文网首页
腾讯云短信+Node.js

腾讯云短信+Node.js

作者: 飞天小猪_pig | 来源:发表于2023-06-29 01:10 被阅读0次

由于项目在注册、登录、找回密码时需要发送短信验证的功能,可以使用腾讯云短信做,新人注册有100条免费短信可用。

前期工作

1、注册腾讯云
2、短信实名认证和领取免费100条短信福利
3、新建API秘钥
4、在短信控制台创建签名(要认证和通过审核)
5、在短信控制台创建正文模板(要通过审核)
6、在短信控制台应用列表创建应用

完成上面工作可以拿到下面代码需要各种id和秘钥


secretId和secretKey.png Sign:蓝色的精灵小程序.png TemplateID.png SDK AppID和App Key.png
第1种:使用NODE SDK 2.0发送
  1. 第一步下载模块 npm install qcloudsms_js
  2. 第二步 引入模块,给相应的参数{SDK的appid、appkey(实例化QcloudSms)、手机号、签名内容}
  3. 第三步生成六位验证码
  4. 第四步调用sendWithParam发送短信

官方示例以及2.0文档:官方示例2.0文档

/*
 * 1. qcloudsms_js采用npm进行安装,要使用qcloudsms功能,只需要执行:
 * npm install qcloudsms_js
 */
//引入qcloudsms_js模块
const QcloudSms = require('qcloudsms_js');
//短信应用SDK appid   (number类型)
var appid = 14xxxxxxx;
//短信应用SDK appkey (字符串类型)
var appkey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
//实例化QcloudSms
var qcloudsms = QcloudSms(appid, appkey);
//需要发送短信的手机号
 var phoneNumbers = ['',''];
//短信模板的id (number类型)
var templateId = xxxxxx;
//签名 (字符串)
var smsSign = 'xxx';

// 设置请求回调处理, 这里只是演示,用户需要自定义相应处理回调
 function callback(err, res, resData) {
     if (err) {
         console.log("err: ", err);
     } else {
         console.log("request data: ", res.req);
         console.log("response data: ", resData);
     }
 }

//生成n位验证码
function RndNum(n) {
    var rnd = "";
    for (var i = 0; i < n; i++)
        rnd += Math.floor(Math.random() * 10);
    return rnd;
}

//六位验证码
var VerificationCode = RndNum(6);

var ssender = qcloudsms.SmsSingleSender();
//短信模板的参数
var params = [VerificationCode, "2"];

/**
 * 参数详情
 * 第一个nationCode(字符串):国家拨号代码,例如中国为86,美国为1
 * 第二个phoneNumber(字符串):电话号码
 * 第三个tempId(数字型):模板编号ID
 * 第四个params(数组):模板中的参数的数组
 * 第五个sign(字符串):签名内容
 * 第六个extend(字符串):扩展字段,默认为空
 * 第七个ext(字符串):内容将按原样由服务器返回
 * 第八个callback(函数):回调函数,发送成功/失败后触发的函数
 */

 ssender.sendWithParam("86", phoneNumbers[0], templateId, params, smsSign, "", "", callback);  
 // 签名参数未提供或者为空时,会使用默认签名发送短信

第2种:NODE SDK3.0发送短信

1、下载模块 tencentcloud-sdk-nodejs
2、导入对应产品模块client models
3、配置client配置(id、key、可选配置),实例化sms的client对象
4、生成六位验证码
5、请求参数(手机号、模板参数、模板id、appid、签名内容)
6、调用client.SendSms发送短信

官方示例:官方文档github使用地址

// Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher
const tencentcloud = require("tencentcloud-sdk-nodejs");
//导入对应产品模块的client models
const SmsClient = tencentcloud.sms.v20190711.Client;

/* SDK 会自动指定域名,通常无需指定域名,但访问金融区的服务时必须手动指定域名
 * 例如 SMS 的上海金融区域名为 sms.ap-shanghai-fsi.tencentcloudapi.com *
 * 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量 */
const clientConfig = {
  //腾讯云认证信息
  credential: {
    secretId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    secretKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  },
  //产品地域
  region: "",
  //可选配置实例
  profile: {
    httpProfile: {
      endpoint: "sms.tencentcloudapi.com",
    },
  },
};
//实例化要请求产品的client对象
//实例化 SMS 的 client 对象
const client = new SmsClient(clientConfig);

//生成n位验证码
function RndNum(n) {
  var rnd = "";
  for (var i = 0; i < n; i++) rnd += Math.floor(Math.random() * 10);
  return rnd;
}

//五位验证码
var VerificationCode = RndNum(6);
/**
 * 参数说明
 * !! SmsSdkAppid  短信应用 ID:在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666
 * !! Sign 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
 * ExtendCode   短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
 * SenderId 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
 * SessionContext  用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
 * PhoneNumberSet 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号] 最多不要超过200个手机号
 * TemplateID   模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
 *  TemplateParamSet  模板参数: 若无模板参数,则设置为空
 */
const params = {
  PhoneNumberSet: ["+86xxxxxxxxxx"],
  TemplateParamSet: [VerificationCode, "5"],
  TemplateID: "xxxxxx",
  SmsSdkAppid: "14xxxxxxxxxxx",
  Sign: "xxxxxxx",
};
// 通过 client 对象调用想要访问的接口,需要传入请求对象以及响应回调函数

client.SendSms(params).then(
  (data) => {
    console.log(data);
  },
  (err) => {
    console.error("error", err);
  }
);


关于频率限制

由于我们是免费用户所以无法进行设置,只能使用默认的配置(30秒发1条/1小时发5条/1天发10条)。

相关文章

  • 腾讯云短信sms node.js sdk开发 免费的短信发送平台

    小程序用户注册使用短信验证码例程 腾讯云短信sms node.js sdk开发 腾讯云每月有100条的赠送短信额度...

  • 09-Flask之短信验证

    腾讯云(短信验证、短信通知) 【需要备案】 参考腾讯云腾讯云短信: https://cloud.tencent....

  • Flask-day09

    腾讯云(短信验证、短信通知) 【需要备案】 参考腾讯云腾讯云短信: https://cloud.tencent....

  • 09-Flask之短信验证

    腾讯云(短信验证、短信通知) 【需要备案】 参考 腾讯云 短信 SMS 申请 创建应用 安装 腾讯云短信 Pyth...

  • 09-Flask之短信验证

    腾讯云(短信验证、短信通知) 【需要备案】 参考 腾讯云 短信 SMS 申请 创建应用 安装 腾讯云短信 Pyth...

  • 09-Flask之短信验证

    腾讯云(短信验证、短信通知) 【需要备案】 参考 腾讯云 短信 SMS 申请 创建应用 安装 腾讯云短信 Pyth...

  • 腾讯云短信接入

    因公司需要短信提醒功能,公司使用了腾讯云的短信包,对于第三方的短信开发功能。接入腾讯云短信还是很简单的,大致的思路...

  • thinkphp之集成腾讯云短信

    thinkphp之集成腾讯云短信 在开发过程中,做个过好多个短信接入的项目,都很简单,最近集成腾讯云短信,竟然弄了...

  • 腾讯云提供每月100条的短信服务

    阿里云,腾讯云,华为云都有一些免费的服务。比如腾讯云为个人提供每月免费100短信的服务。不过是有限制的。 短信中必...

  • SpringBoot 集成腾讯云短信服务

    开通腾讯云短信服务 注册腾讯云 个人实名认证 进入到控制台,在云产品中找到短信-w1107 默认是没有开通的,阅读...

网友评论

      本文标题:腾讯云短信+Node.js

      本文链接:https://www.haomeiwen.com/subject/jcjaydtx.html