開發中使用 【容聯 雲通訊】獲取短信驗證碼的 Javascript 接口

開發中使用 【容聯 雲通訊】獲取短信驗證碼的 Javascript 接口

  1. 註冊帳號:https://www.yuntongxun.com/,註冊後送8元,開發試用能夠用好久了。
  2. 在平臺應用列表添加應用。
  3. 在測試號碼中綁定測試手機號碼,只有這個號碼能接收驗證短信。
  4. 在項目中綁定配置:將控制檯首頁的開發者主帳號信息粘貼複製進下列接口代碼的相應位置。

一個先後臺分離的應用,在後臺項目目錄下創建 util文件夾,創建util/sms_util.js文件,文件內寫使用 【容聯 雲通訊】平臺獲取短信驗證碼的 Javascript 接口代碼:javascript

// 容聯雲通訊 短信驗證碼接口

var md5 = require('blueimp-md5')
var moment = require('moment')
var Base64 = require('js-base64').Base64;
var request = require('request');

/*
生成指定長度的隨機數
 */
function randomCode(length) {
    var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
    var result = ""; //統一更名: alt + shift + R
    for (var i = 0; i < length; i++) {
        var index = Math.ceil(Math.random() * 9);
        result += chars[index];
    }
    return result;
}
// console.log(randomCode(6));
exports.randomCode = randomCode;

/*
向指定號碼發送指定驗證碼
 */
// 將控制檯首頁的開發者主帳號信息粘貼複製進下列接口代碼的相應位置
function sendCode(phone, code, callback) {
    var ACCOUNT_SID = '';
    var AUTH_TOKEN = '';
    var Rest_URL = '';
    var AppID = '';
    //1. 準備請求url
    /*
    1.使用MD5加密(帳戶Id + 帳戶受權令牌 + 時間戳)。其中帳戶Id和帳戶受權令牌根據url的驗證級別對應主帳戶。
    時間戳是當前系統時間,格式"yyyyMMddHHmmss"。時間戳有效時間爲24小時,如:20140416142030
    2.SigParameter參數須要大寫,如不能寫成sig=abcdefg而應該寫成sig=ABCDEFG
     */
    var sigParameter = '';
    var time = moment().format('YYYYMMDDHHmmss');
    sigParameter = md5(ACCOUNT_SID + AUTH_TOKEN + time);
    var url = Rest_URL + '/2019-6-16/Accounts/' + ACCOUNT_SID + '/SMS/TemplateSMS?sig=' + sigParameter;

    //2. 準備請求體
    var body = {
        to: phone,
        appId: AppID,
        templateId: '1',
        "datas": [code, "1"]
    }
    //body = JSON.stringify(body);

    //3. 準備請求頭
    /*
    1.使用Base64編碼(帳戶Id + 冒號 + 時間戳)其中帳戶Id根據url的驗證級別對應主帳戶
    2.冒號爲英文冒號
    3.時間戳是當前系統時間,格式"yyyyMMddHHmmss",需與SigParameter中時間戳相同。
     */
    var authorization = ACCOUNT_SID + ':' + time;
    authorization = Base64.encode(authorization);
    var headers = {
        'Accept': 'application/json',
        'Content-Type': 'application/json;charset=utf-8',
        'Content-Length': JSON.stringify(body).length + '',
        'Authorization': authorization
    }

    //4. 發送請求, 並獲得返回的結果, 調用callback
    // callback(true);
    request({
        method: 'POST',
        url: url,
        headers: headers,
        body: body,
        json: true
    }, function (error, response, body) {
        console.log(error, response, body);
        callback(body.statusCode === '000000');
        // callback(true);
    });
}
exports.sendCode = sendCode;

/*
sendCode('13716962779', randomCode(6), function (success) {
    console.log(success);
})*/

5.在後臺路由文件/routes/index.js中引入,使用:java

const sms_util = require('../util/sms_util')

/*
發送驗證碼短信
*/
router.get('/sendcode', function (req, res, next) {
  //1. 獲取請求參數數據
  var phone = req.query.phone;
  //2. 處理數據
  //生成驗證碼(6位隨機數)
  var code = sms_util.randomCode(6);
  //發送給指定的手機號
  console.log(`向${phone}發送驗證碼短信: ${code}`);
  sms_util.sendCode(phone, code, function (success) {//success表示是否成功
    if (success) {
      users[phone] = code
      console.log('保存驗證碼: ', phone, code)
      res.send({"code": 0})
    } else {
      //3. 返回響應數據
      res.send({"code": 1, msg: '短信驗證碼發送失敗'})
    }
  })
})

6.在前臺應用中輸入綁定的測試手機號,發送驗證碼。json

相關文章
相關標籤/搜索