摘要:開發中使用容聯云通信獲取短信驗證碼的接口注冊賬號,注冊后送元,開發試用可以用很久了。在測試號碼中綁定測試手機號碼,只有這個號碼能接收驗證短信。其中賬戶和賬戶授權令牌根據的驗證級別對應主賬戶。
開發中使用 【容聯 云通信】獲取短信驗證碼的 Javascript 接口
注冊賬號:https://www.yuntongxun.com/,注冊后送8元,開發試用可以用很久了。
在平臺應用列表添加應用。
在測試號碼中綁定測試手機號碼,只有這個號碼能接收驗證短信。
在項目中綁定配置:將控制臺首頁的開發者主賬號信息粘貼復制進下列接口代碼的相應位置。
一個前后臺分離的應用,在后臺項目目錄下建立 util文件夾,建立util/sms_util.js文件,文件內寫使用 【容聯 云通信】平臺獲取短信驗證碼的 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中引入,使用:
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.在前臺應用中輸入綁定的測試手機號,發送驗證碼。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104787.html
由于前段時間自己在多個項目里都有發送短信的需求,導致我需要在每個項目里面重復寫短信發送,發送結果管理,以及驗證碼校驗等功能。 所以萌生了要為laravel量身打造一個綜合性的短信發送包。該包初步構想的是能支持多種第三方服務商(如云片,云通訊,Luosimao等),并集成短信發送以及驗證碼短信發送/校驗模塊。 后來在phphub上看到有人提出如果短信發送不成功或者被審核了, 調用另一個服務商的來...
摘要:登錄注冊安全風險登錄注冊的風險點主要有四個暴力破解撞庫遍歷注冊用戶批量注冊。引入了驗證碼機制同樣引入了額外的安全風險,比如短信驗證碼的短信炸彈風險圖形驗證碼的可繞過可識別等。 概述 很多技術研發不了解安全,也不重視安全,只有在自己的服務器被黑掉、被掛馬、被脫褲才想起關注安全,但是這個時候,技術架構已經成型、代碼已經在線上穩定運行,再亡羊補牢,改代碼、改策略,往往成本巨大、確收效很低。所...
摘要:在次失敗后,第四次請求,就返回錯誤文案驗證碼連續錯誤三次,請重新獲取短信驗證碼還有一個需要思考的維度。一般來說,短信驗證碼會有分鐘的有效期。 前言: 現如今登錄用手機驗證碼登錄是越來越常見了。雖然會增加成本,不過對用戶體驗的提升還是很有幫助的。那么,當產品經理對開發說,來按照這個原型給我搞個短信驗證碼登錄的時候。我們作為研發,應該想些什么?showImg(https://upload-...
閱讀 1298·2021-11-15 11:37
閱讀 3494·2021-11-11 16:55
閱讀 1741·2021-08-25 09:39
閱讀 3206·2019-08-30 15:44
閱讀 1728·2019-08-29 12:52
閱讀 1396·2019-08-29 11:10
閱讀 3229·2019-08-26 11:32
閱讀 3215·2019-08-26 10:16