Nodejs实现给手机发送短信验证码用于登录功能(免费短信)
生活随笔
收集整理的這篇文章主要介紹了
Nodejs实现给手机发送短信验证码用于登录功能(免费短信)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們開發的應用通常需要通過手機短信驗證碼驗證進行登錄,方便了那些容易忘記密碼的用戶,同時也降低了是密碼被盜的風險性。
文章目錄
- 1.注冊容聯云通信賬號(免費)
- 2.nodejs發送請求即可發送短信驗證碼
1.注冊容聯云通信賬號(免費)
1.點擊這里進入官網進行注冊:
正確填寫信息注冊即可。
2.進入管理控制臺
剛注冊的用戶是有8塊贈送金額用于發送短信驗證碼。下面四個涂鴉信息就是關鍵信息,需要在nodejs服務端使用,最好不要暴露。
3.點擊“測試號碼”
由于我們開發時,應用都是未上線的,所以在開發時只有設置了測試賬號才可以發送短信,我們也不必去設置短信的模板,因為那是要充值了300元以上才可以使用。
測試號碼最多可以添加三個。
2.nodejs發送請求即可發送短信驗證碼
在容聯云通信的文檔中有其它后端語言的發送短信demo,很不幸就是沒有nodejs的,那只能按照接口文檔自己寫nodejs版本的了。
1.首先引入各種要用到的包:
1.npm i md5 --save 2.npm i moment --save 3.npm i js-base64 --save 4.npm i request --save上源碼:utils/getMessage.js
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 + Rfor(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 = '8aaf0708751c249f01752faf7d0160';var AUTH_TOKEN = 'ad0e93aa506d4338b674b9f60ee5e6';var Rest_URL = 'https://app.cloopen.com:8883';var AppID = '8aaf0708751c249f0175204fb00166';//1. 準備請求url/*1.使用MD5加密(賬戶Id + 賬戶授權令牌 + 時間戳)。其中賬戶Id和賬戶授權令牌根據url的驗證級別對應主賬戶。時間戳是當前系統時間,格式"yyyyMMddHHmmss"。時間戳有效時間為24小時,如:201404161420302.SigParameter參數需要大寫,如不能寫成sig=abcdefg而應該寫成sig=ABCDEFG*/var sigParameter = '';var time = moment().format('YYYYMMDDHHmmss');sigParameter = md5(ACCOUNT_SID+AUTH_TOKEN+time);var url = Rest_URL+'/2013-12-26/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) {callback(body.statusCode==='000000');}); } exports.sendCode = sendCode;你們要使用時只需將ACCOUNT_SID、AUTH_TOKEN、Rest_URL、AppID換成自己在官網申請的數據即可。(上面四個數據已被我更改)
使用示例:
const express = require("express"); const {randomCode,sendCode}=require("./utils/getMessage");const app=express();//實例app.get("/login",(req,res)=>{let code=randomCode(6);//生成6位數字隨機驗證碼sendCode("測試號碼",code,function(success){if(success){res.send("短信驗證碼已發送");}else{res.send("短信驗證碼發送失敗");}}) })const server=app.listen(4200,function(){const {address,port}=server.address();console.log(address,port);console.log("HTTP服務已啟動"); })啟動nodejs服務器,在瀏覽器訪問localhost:4200將會發送手機驗證碼。
如對你有幫助,請點贊。
總結
以上是生活随笔為你收集整理的Nodejs实现给手机发送短信验证码用于登录功能(免费短信)的全部內容,希望文章能夠幫你解決所遇到的問題。