摘要:開(kāi)發(fā)中使用容聯(lián)云通信獲取短信驗(yàn)證碼的接口注冊(cè)賬號(hào),注冊(cè)后送元,開(kāi)發(fā)試用可以用很久了。在測(cè)試號(hào)碼中綁定測(cè)試手機(jī)號(hào)碼,只有這個(gè)號(hào)碼能接收驗(yàn)證短信。其中賬戶(hù)和賬戶(hù)授權(quán)令牌根據(jù)的驗(yàn)證級(jí)別對(duì)應(yīng)主賬戶(hù)。
開(kāi)發(fā)中使用 【容聯(lián) 云通信】獲取短信驗(yàn)證碼的 Javascript 接口
注冊(cè)賬號(hào):https://www.yuntongxun.com/,注冊(cè)后送8元,開(kāi)發(fā)試用可以用很久了。
在平臺(tái)應(yīng)用列表添加應(yīng)用。
在測(cè)試號(hào)碼中綁定測(cè)試手機(jī)號(hào)碼,只有這個(gè)號(hào)碼能接收驗(yàn)證短信。
在項(xiàng)目中綁定配置:將控制臺(tái)首頁(yè)的開(kāi)發(fā)者主賬號(hào)信息粘貼復(fù)制進(jìn)下列接口代碼的相應(yīng)位置。
一個(gè)前后臺(tái)分離的應(yīng)用,在后臺(tái)項(xiàng)目目錄下建立 util文件夾,建立util/sms_util.js文件,文件內(nèi)寫(xiě)使用 【容聯(lián) 云通信】平臺(tái)獲取短信驗(yàn)證碼的 Javascript 接口代碼:
// 容聯(lián)云通信 短信驗(yàn)證碼接口 var md5 = require("blueimp-md5") var moment = require("moment") var Base64 = require("js-base64").Base64; var request = require("request"); /* 生成指定長(zhǎng)度的隨機(jī)數(shù) */ function randomCode(length) { var chars = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; var result = ""; //統(tǒng)一改名: 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; /* 向指定號(hào)碼發(fā)送指定驗(yàn)證碼 */ // 將控制臺(tái)首頁(yè)的開(kāi)發(fā)者主賬號(hào)信息粘貼復(fù)制進(jìn)下列接口代碼的相應(yīng)位置 function sendCode(phone, code, callback) { var ACCOUNT_SID = ""; var AUTH_TOKEN = ""; var Rest_URL = ""; var AppID = ""; //1. 準(zhǔn)備請(qǐng)求url /* 1.使用MD5加密(賬戶(hù)Id + 賬戶(hù)授權(quán)令牌 + 時(shí)間戳)。其中賬戶(hù)Id和賬戶(hù)授權(quán)令牌根據(jù)url的驗(yàn)證級(jí)別對(duì)應(yīng)主賬戶(hù)。 時(shí)間戳是當(dāng)前系統(tǒng)時(shí)間,格式"yyyyMMddHHmmss"。時(shí)間戳有效時(shí)間為24小時(shí),如:20140416142030 2.SigParameter參數(shù)需要大寫(xiě),如不能寫(xiě)成sig=abcdefg而應(yīng)該寫(xiě)成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. 準(zhǔn)備請(qǐng)求體 var body = { to: phone, appId: AppID, templateId: "1", "datas": [code, "1"] } //body = JSON.stringify(body); //3. 準(zhǔn)備請(qǐng)求頭 /* 1.使用Base64編碼(賬戶(hù)Id + 冒號(hào) + 時(shí)間戳)其中賬戶(hù)Id根據(jù)url的驗(yàn)證級(jí)別對(duì)應(yīng)主賬戶(hù) 2.冒號(hào)為英文冒號(hào) 3.時(shí)間戳是當(dāng)前系統(tǒng)時(shí)間,格式"yyyyMMddHHmmss",需與SigParameter中時(shí)間戳相同。 */ 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. 發(fā)送請(qǐng)求, 并得到返回的結(jié)果, 調(diào)用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.在后臺(tái)路由文件/routes/index.js中引入,使用:
const sms_util = require("../util/sms_util") /* 發(fā)送驗(yàn)證碼短信 */ router.get("/sendcode", function (req, res, next) { //1. 獲取請(qǐng)求參數(shù)數(shù)據(jù) var phone = req.query.phone; //2. 處理數(shù)據(jù) //生成驗(yàn)證碼(6位隨機(jī)數(shù)) var code = sms_util.randomCode(6); //發(fā)送給指定的手機(jī)號(hào) console.log(`向${phone}發(fā)送驗(yàn)證碼短信: ${code}`); sms_util.sendCode(phone, code, function (success) {//success表示是否成功 if (success) { users[phone] = code console.log("保存驗(yàn)證碼: ", phone, code) res.send({"code": 0}) } else { //3. 返回響應(yīng)數(shù)據(jù) res.send({"code": 1, msg: "短信驗(yàn)證碼發(fā)送失敗"}) } }) })
6.在前臺(tái)應(yīng)用中輸入綁定的測(cè)試手機(jī)號(hào),發(fā)送驗(yàn)證碼。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104787.html
摘要:獲取阿里云訪(fǎng)問(wèn)密鑰為了使用短信發(fā)送,您必須申請(qǐng)阿里云的訪(fǎng)問(wèn)密鑰。國(guó)際港澳臺(tái)消息只能使用國(guó)際港澳臺(tái)短信模版發(fā)送短信。 1.獲取阿里云訪(fǎng)問(wèn)密鑰 為了使用短信發(fā)送API-Python SDK,您必須申請(qǐng)阿里云的訪(fǎng)問(wèn)密鑰。 阿里云訪(fǎng)問(wèn)秘鑰是阿里云為用戶(hù)使用 API(非控制臺(tái))來(lái)訪(fǎng)問(wèn)其云資源設(shè)計(jì)的安全口令。您可以用它來(lái)簽名 API 請(qǐng)求內(nèi)容以通過(guò)服務(wù)端的安全驗(yàn)證。 該訪(fǎng)問(wèn)秘鑰成對(duì)(AccessK...
由于前段時(shí)間自己在多個(gè)項(xiàng)目里都有發(fā)送短信的需求,導(dǎo)致我需要在每個(gè)項(xiàng)目里面重復(fù)寫(xiě)短信發(fā)送,發(fā)送結(jié)果管理,以及驗(yàn)證碼校驗(yàn)等功能。 所以萌生了要為laravel量身打造一個(gè)綜合性的短信發(fā)送包。該包初步構(gòu)想的是能支持多種第三方服務(wù)商(如云片,云通訊,Luosimao等),并集成短信發(fā)送以及驗(yàn)證碼短信發(fā)送/校驗(yàn)?zāi)K。 后來(lái)在phphub上看到有人提出如果短信發(fā)送不成功或者被審核了, 調(diào)用另一個(gè)服務(wù)商的來(lái)...
摘要:登錄注冊(cè)安全風(fēng)險(xiǎn)登錄注冊(cè)的風(fēng)險(xiǎn)點(diǎn)主要有四個(gè)暴力破解撞庫(kù)遍歷注冊(cè)用戶(hù)批量注冊(cè)。引入了驗(yàn)證碼機(jī)制同樣引入了額外的安全風(fēng)險(xiǎn),比如短信驗(yàn)證碼的短信炸彈風(fēng)險(xiǎn)圖形驗(yàn)證碼的可繞過(guò)可識(shí)別等。 概述 很多技術(shù)研發(fā)不了解安全,也不重視安全,只有在自己的服務(wù)器被黑掉、被掛馬、被脫褲才想起關(guān)注安全,但是這個(gè)時(shí)候,技術(shù)架構(gòu)已經(jīng)成型、代碼已經(jīng)在線(xiàn)上穩(wěn)定運(yùn)行,再亡羊補(bǔ)牢,改代碼、改策略,往往成本巨大、確收效很低。所...
摘要:在次失敗后,第四次請(qǐng)求,就返回錯(cuò)誤文案驗(yàn)證碼連續(xù)錯(cuò)誤三次,請(qǐng)重新獲取短信驗(yàn)證碼還有一個(gè)需要思考的維度。一般來(lái)說(shuō),短信驗(yàn)證碼會(huì)有分鐘的有效期。 前言: 現(xiàn)如今登錄用手機(jī)驗(yàn)證碼登錄是越來(lái)越常見(jiàn)了。雖然會(huì)增加成本,不過(guò)對(duì)用戶(hù)體驗(yàn)的提升還是很有幫助的。那么,當(dāng)產(chǎn)品經(jīng)理對(duì)開(kāi)發(fā)說(shuō),來(lái)按照這個(gè)原型給我搞個(gè)短信驗(yàn)證碼登錄的時(shí)候。我們作為研發(fā),應(yīng)該想些什么?showImg(https://upload-...
閱讀 1313·2021-11-15 11:37
閱讀 3502·2021-11-11 16:55
閱讀 1755·2021-08-25 09:39
閱讀 3219·2019-08-30 15:44
閱讀 1735·2019-08-29 12:52
閱讀 1407·2019-08-29 11:10
閱讀 3243·2019-08-26 11:32
閱讀 3226·2019-08-26 10:16