日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nodejs实现给手机发送短信验证码用于登录功能(免费短信)

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实现给手机发送短信验证码用于登录功能(免费短信)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。