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实现给手机发送短信验证码用于登录功能(免费短信)相关推荐
- 06-发送短信验证码实现登录功能
1.发送短信验证码实现登录功能的流程 1.1.获取验证码流程 1.2.登录流程 1.3.页面带有图形验证码的流程 2. 注册登录二合一页面的开发 2.1.将src目录下的App.vue页面上通用显示的 ...
- SpringBoot 实现手机发送短信验证码
手机发送短信 内容 一.手机发送短信 1. 前端界面代码 2. UserInfoController 控制器 3. application.properties 配置类文件 4. 具体实现 总结 内容 ...
- php实现短信找回密码,thinkphp5怎么调用云片接口实现发送短信验证码找回密码功能...
thinkphp5怎么调用云片接口实现发送短信验证码找回密码功能 发布时间:2020-12-11 12:33:42 来源:亿速云 阅读:60 作者:小新 小编给大家分享一下thinkphp5怎么调用云 ...
- html5实现短信验证修改密码,thinkphp5如何调用云片接口实现发送短信验证码找回密码功能...
下面由thinkphp框架教程栏目给大家介绍thinkphp5如何调用云片接口实现发送短信验证码找回密码功能,希望对需要的朋友有所帮助! 思路: 1.用户输入手机号,请求获取短信验证码. 2.thin ...
- Java实现手机发送短信验证码
发送短信验证码首先要在互亿无线短信平台去开通短信服务,地址"ihuyi.com" 一定要留好自己申请的API ID,API key和模板 参数说明: 代码示例: pom导包 < ...
- 手机发送短信验证码登录完整实例
项目需求 后台生成随机6位数作为验证码,发送给手机,同时将验证码存入缓存,用户登录时验证输入的验证码是否过期或者是否正确. 一.发送短信 1.了解短信发送 通过发送短信的API,建立一个URL类的对象 ...
- java给手机发短信_java给手机发送短信验证码
最近在做项目,分配到一个使用手机验证码实现快速登录的需求,好了No B B 了直接进入主题. 首先进入官网(http://www.miaodiyun.com/) 进行注册登录,这个不用教吧. 注册登录 ...
- 【前端】jQuery手机发送短信验证码定时器
//短信发送$('.vcode-send').click(function () {/*发送前端验证码按钮变化*/if ($(this).hasClass('disabled')) {} else { ...
- 发送短信验证码执行登录操作
短信服务介绍: 目前市场上有很多第三方提供的短信服务,这些第三方短息服务会和各个运营商(移动,联通,电信)对接,我们只需要注册成为会员,并且按照提供的开发文档进行调用就可以完成发送短信,需要说明的是, ...
最新文章
- 不用工具箱的神经网络matlab程序_MATLAB中的神经网络工具箱(2)函数命令及模型搭建...
- 基于移动位置服务器,移动定位服务器的设计与实现
- 【控制】《多智能体机器人系统信息融合与协调》范波老师-第8章-Agent 技术在机器人智能控制系统的应用
- WindowsFormsHost使用问题
- LeetCode 536. 从字符串生成二叉树(递归)
- 小程序开发(9)-之地图组件map、导航
- 扩展log4j系列[二]为DailyRollingFileAppender加上maxBackupIndex属性
- ARM开发7.5.2 基础实训( 6 ) 4×4 矩阵键盘和 2 路 LED 显示系统( 2 )--LPC21XX
- DIY_红外计数模块
- android studio 模拟器很慢,解决AndroidStudio模拟器卡慢的问题
- 程序员毕业去大公司好还是小公司好?
- 好的用户界面-界面设计的一些技巧
- Java飞机大战小游戏练习
- 吴章金: 实例解析 Linux C 语言程序之变量类型
- cocos creator接入微信登陆sdk ios篇
- 三节课产品经理P1 作业
- Python之dir()与__dict__的区别
- PHP+JS写一个博客系统
- 《算法导论》第三版第31章 数论算法 练习思考题 个人答案
- Fiddle 抓取手机请求(HTTPS)
热门文章
- vue.js (制作电商网站)知识点总结一 待补充
- idea 2020取消Import Maven projects automatically
- Excel 2010 VBA 入门 052 DateAdd函数
- Android 百度地图开发问题----解决地图有时候加载不出来问题
- iOS 第三方框架-Masonry介绍与使用实践
- SC系列(SC-12S)低频率小型SMD石英晶振SC-12S32.768KHZ12.5PF/20PPM
- 自己动手写数据库系统:容灾恢复原理和容灾恢复日志的设计
- 单片机实验三(1):中断处理,定时器
- Java闭关修炼64课 很适合新手学习的JAVA视频教程
- 数据科学与计算机学院凌云,向凌云副教授