騰訊云短信+Node.js

由于項目在注冊、登錄、找回密碼時需要發(fā)送短信驗證的功能,可以使用騰訊云短信做,新人注冊有100條免費(fèi)短信可用。

前期工作

1、注冊騰訊云
2、短信實(shí)名認(rèn)證和領(lǐng)取免費(fèi)100條短信福利
3、新建API秘鑰
4、在短信控制臺創(chuàng)建簽名(要認(rèn)證和通過審核)
5、在短信控制臺創(chuàng)建正文模板(要通過審核)
6、在短信控制臺應(yīng)用列表創(chuàng)建應(yīng)用

完成上面工作可以拿到下面代碼需要各種id和秘鑰


secretId和secretKey.png
Sign:藍(lán)色的精靈小程序.png
TemplateID.png
SDK AppID和App Key.png
第1種:使用NODE SDK 2.0發(fā)送
  1. 第一步下載模塊 npm install qcloudsms_js
  2. 第二步 引入模塊,給相應(yīng)的參數(shù){SDK的appid、appkey(實(shí)例化QcloudSms)、手機(jī)號、簽名內(nèi)容}
  3. 第三步生成六位驗證碼
  4. 第四步調(diào)用sendWithParam發(fā)送短信

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

/*
 * 1. qcloudsms_js采用npm進(jìn)行安裝,要使用qcloudsms功能,只需要執(zhí)行:
 * npm install qcloudsms_js
 */
//引入qcloudsms_js模塊
const QcloudSms = require('qcloudsms_js');
//短信應(yīng)用SDK appid   (number類型)
var appid = 14xxxxxxx;
//短信應(yīng)用SDK appkey (字符串類型)
var appkey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
//實(shí)例化QcloudSms
var qcloudsms = QcloudSms(appid, appkey);
//需要發(fā)送短信的手機(jī)號
 var phoneNumbers = ['',''];
//短信模板的id (number類型)
var templateId = xxxxxx;
//簽名 (字符串)
var smsSign = 'xxx';

// 設(shè)置請求回調(diào)處理, 這里只是演示,用戶需要自定義相應(yīng)處理回調(diào)
 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();
//短信模板的參數(shù)
var params = [VerificationCode, "2"];

/**
 * 參數(shù)詳情
 * 第一個nationCode(字符串):國家撥號代碼,例如中國為86,美國為1
 * 第二個phoneNumber(字符串):電話號碼
 * 第三個tempId(數(shù)字型):模板編號ID
 * 第四個params(數(shù)組):模板中的參數(shù)的數(shù)組
 * 第五個sign(字符串):簽名內(nèi)容
 * 第六個extend(字符串):擴(kuò)展字段,默認(rèn)為空
 * 第七個ext(字符串):內(nèi)容將按原樣由服務(wù)器返回
 * 第八個callback(函數(shù)):回調(diào)函數(shù),發(fā)送成功/失敗后觸發(fā)的函數(shù)
 */

 ssender.sendWithParam("86", phoneNumbers[0], templateId, params, smsSign, "", "", callback);  
 // 簽名參數(shù)未提供或者為空時,會使用默認(rèn)簽名發(fā)送短信

第2種:NODE SDK3.0發(fā)送短信

1、下載模塊 tencentcloud-sdk-nodejs
2、導(dǎo)入對應(yīng)產(chǎn)品模塊client models
3、配置client配置(id、key、可選配置),實(shí)例化sms的client對象
4、生成六位驗證碼
5、請求參數(shù)(手機(jī)號、模板參數(shù)、模板id、appid、簽名內(nèi)容)
6、調(diào)用client.SendSms發(fā)送短信

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

// Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher
const tencentcloud = require("tencentcloud-sdk-nodejs");
//導(dǎo)入對應(yīng)產(chǎn)品模塊的client models
const SmsClient = tencentcloud.sms.v20190711.Client;

/* SDK 會自動指定域名,通常無需指定域名,但訪問金融區(qū)的服務(wù)時必須手動指定域名
 * 例如 SMS 的上海金融區(qū)域名為 sms.ap-shanghai-fsi.tencentcloudapi.com *
 * 第二個參數(shù)是地域信息,可以直接填寫字符串 ap-guangzhou,或者引用預(yù)設(shè)的常量 */
const clientConfig = {
  //騰訊云認(rèn)證信息
  credential: {
    secretId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    secretKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  },
  //產(chǎn)品地域
  region: "",
  //可選配置實(shí)例
  profile: {
    httpProfile: {
      endpoint: "sms.tencentcloudapi.com",
    },
  },
};
//實(shí)例化要請求產(chǎn)品的client對象
//實(shí)例化 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);
/**
 * 參數(shù)說明
 * !! SmsSdkAppid  短信應(yīng)用 ID:在 [短信控制臺] 添加應(yīng)用后生成的實(shí)際 SDKAppID,例如1400006666
 * !! Sign 短信簽名內(nèi)容: 使用 UTF-8 編碼,必須填寫已審核通過的簽名,可登錄 [短信控制臺] 查看簽名信息
 * ExtendCode   短信碼號擴(kuò)展號: 默認(rèn)未開通,如需開通請聯(lián)系 [sms helper]
 * SenderId 國際/港澳臺短信 senderid: 國內(nèi)短信填空,默認(rèn)未開通,如需開通請聯(lián)系 [sms helper]
 * SessionContext  用戶的 session 內(nèi)容: 可以攜帶用戶側(cè) ID 等上下文信息,server 會原樣返回
 * PhoneNumberSet 下發(fā)手機(jī)號碼,采用 e.164 標(biāo)準(zhǔn),+[國家或地區(qū)碼][手機(jī)號] 最多不要超過200個手機(jī)號
 * TemplateID   模板 ID: 必須填寫已審核通過的模板 ID,可登錄 [短信控制臺] 查看模板 ID
 *  TemplateParamSet  模板參數(shù): 若無模板參數(shù),則設(shè)置為空
 */
const params = {
  PhoneNumberSet: ["+86xxxxxxxxxx"],
  TemplateParamSet: [VerificationCode, "5"],
  TemplateID: "xxxxxx",
  SmsSdkAppid: "14xxxxxxxxxxx",
  Sign: "xxxxxxx",
};
// 通過 client 對象調(diào)用想要訪問的接口,需要傳入請求對象以及響應(yīng)回調(diào)函數(shù)

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


關(guān)于頻率限制

由于我們是免費(fèi)用戶所以無法進(jìn)行設(shè)置,只能使用默認(rèn)的配置(30秒發(fā)1條/1小時發(fā)5條/1天發(fā)10條)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容