1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Nodejs实现给手机发送短信验证码用于登录功能(短信)

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

时间:2023-03-26 04:32:24

相关推荐

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

我们开发的应用通常需要通过手机短信验证码验证进行登录,方便了那些容易忘记密码的用户,同时也降低了是密码被盗的风险性。

文章目录

1.注册容联云通信账号(免费)2.nodejs发送请求即可发送短信验证码

1.注册容联云通信账号(免费)

1.点击这里进入官网进行注册:

正确填写信息注册即可。

2.进入管理控制台

刚注册的用户是有8块赠送金额用于发送短信验证码。下面四个涂鸦信息就是关键信息,需要在nodejs服务端使用,最好不要暴露。

3.点击“测试号码”

由于我们开发时,应用都是未上线的,所以在开发时只有设置了测试账号才可以发送短信,我们也不必去设置短信的模板,因为那是要充值了300元以上才可以使用。

测试号码最多可以添加三个。

2.nodejs发送请求即可发送短信验证码

在容联云通信的文档中有其它后端语言的发送短信demo,很不幸就是没有nodejs的,那只能按照接口文档自己写nodejs版本的了。

1.首先引入各种要用到的包:

1.npm i md5 --save2.npm i moment --save3.npm i js-base64 --save4.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 = ':8883';var AppID = '8aaf0708751c249f0175204fb00166';//1. 准备请求url/*1.使用MD5加密(账户Id + 账户授权令牌 + 时间戳)。其中账户Id和账户授权令牌根据url的验证级别对应主账户。时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳有效时间为24小时,如:04161420302.SigParameter参数需要大写,如不能写成sig=abcdefg而应该写成sig=ABCDEFG*/var sigParameter = '';var time = moment().format('YYYYMMDDHHmmss');sigParameter = md5(ACCOUNT_SID+AUTH_TOKEN+time);var url = Rest_URL+'/-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_SIDAUTH_TOKENRest_URLAppID换成自己在官网申请的数据即可。(上面四个数据已被我更改)

使用示例:

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将会发送手机验证码。

如对你有帮助,请点赞。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。