node.js 实现手机号验证码登录功能

 更新时间:2022年08月12日 09:16:49   作者:叶鲜乐  
这篇文章主要介绍了node.js 实现手机号验证码登录功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

1.官网进行注册:https://www.yuntongxun.com/

第二步 拿到自己的ACCOUNT_SIDAUTH_TOKENRest_URLAppID

            

第三步注册自己的测试手机号

第四步 下载包

1.npm i md5 --save
2.npm i moment --save
3.npm i js-base64 --save
4.npm i request --save

一次下载 :npm i md5 moment js-base64 request --save 注意:package.json 看一下一定要全部安装到位

第五步 写代码 创建文件夹 文件命名 自己随意

可复制:    

const md5 = require('blueimp-md5')
const moment = require('moment')
const Base64 = require('js-base64').Base64;
const request = require('request');

/*
 生成指定长度的随机数
 */
function randomCode(length) {
    const chars = ['0','1','2','3','4','5','6','7','8','9'];
    const result = ""; //统一改名: 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;

/*
向指定号码发送指定验证码
 */
function sendCode(phone, code, callback) {
    const ACCOUNT_SID = '账号上的 ACCOUNT_SID';
    const AUTH_TOKEN = '账号上AUTH_TOKEN ';
    const Rest_URL = 'https://app.cloopen.com:8883';
    const AppID = '账号上的AppID ';
    //1. 准备请求url
    /*
     1.使用MD5加密(账户Id + 账户授权令牌 + 时间戳)。其中账户Id和账户授权令牌根据url的验证级别对应主账户。
     时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳有效时间为24小时,如:20140416142030
     2.SigParameter参数需要大写,如不能写成sig=abcdefg而应该写成sig=ABCDEFG
     */
    const sigParameter = '';
    const time = moment().format('YYYYMMDDHHmmss');
    sigParameter = md5(ACCOUNT_SID+AUTH_TOKEN+time);
    const url = Rest_URL+'/2013-12-26/Accounts/'+ACCOUNT_SID+'/SMS/TemplateSMS?sig='+sigParameter;

    //2. 准备请求体
    const body = {
        to : phone,
        appId : AppID,
        templateId : '1',
        "datas":[code,"1"]
    }
    //body = JSON.stringify(body);

    //3. 准备请求头
    /*
     1.使用Base64编码(账户Id + 冒号 + 时间戳)其中账户Id根据url的验证级别对应主账户
     2.冒号为英文冒号
     3.时间戳是当前系统时间,格式"yyyyMMddHHmmss",需与SigParameter中时间戳相同。
     */
    const authorization = ACCOUNT_SID + ':' + time;
    authorization = Base64.encode(authorization);
    const 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;

第六步 在接口文件夹引入

const {randomCode,sendCode}=require("../utils/getMessage");
// 登录  注意:这个接口根据你自己的写接口习惯更改  我这个接口用的是模块化 对外暴露 在外界文件夹中引入使用
exports.login = (req,res)=>{
  let code=randomCode(6);//生成6位数字随机验证码
  console.log(code)
  sendCode("15224745090",code,function(success){
      if(success){
          res.send("短信验证码已发送");
      }else{
          res.send("短信验证码发送失败");
      }
  })

}

到此这篇关于node.js 实现手机号验证码登录功能的文章就介绍到这了,更多相关node.js 手机号 验证码 登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • node.js从数据库获取数据

    node.js从数据库获取数据

    这篇文章主要为大家详细介绍了node.js从数据库获取数据的具体代码,nodejs可以获取具体某张数据表信息,感兴趣的朋友可以参考一下
    2016-05-05
  • node.js中的fs.chownSync方法使用说明

    node.js中的fs.chownSync方法使用说明

    这篇文章主要介绍了node.js中的fs.chownSync方法使用说明,本文介绍了fs.chownSync的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • node.js中joi模块的基本使用方式

    node.js中joi模块的基本使用方式

    这篇文章主要介绍了node.js中joi模块的基本使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Node.js connect ECONNREFUSED错误解决办法

    Node.js connect ECONNREFUSED错误解决办法

    这篇文章主要介绍了Node.js connect ECONNREFUSED错误解决办法的相关资料,需要的朋友可以参考下
    2016-09-09
  • Node.js工具库yeoman使用介绍

    Node.js工具库yeoman使用介绍

    这篇文章主要为大家介绍了Node.js工具库yeoman的使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 浅谈node.js中async异步编程

    浅谈node.js中async异步编程

    本文尝试结合Marc Fasel的指导思想和笔者的实践经验来介绍一些NodeJS的异步编程风格,希望对NodeJS的初学者有所启发。
    2015-10-10
  • Node 模块原理与用法详解

    Node 模块原理与用法详解

    这篇文章主要介绍了Node 模块原理与用法,结合实例形式详细分析了node.js模块基本概念、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • 在NodeJs中使用node-schedule增加定时器任务的方法

    在NodeJs中使用node-schedule增加定时器任务的方法

    这篇文章主要介绍了从零开始在NodeJs中使用node-schedule增加定时器任务的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • node.js程序作为服务并在windows下开机自启动(用forever)

    node.js程序作为服务并在windows下开机自启动(用forever)

    这篇文章主要介绍了node.js程序作为服务并在windows下开机自启动的相关资料,因为实现的功能比较简单,没有选择功能比较强大的pm2,文中选择利用了forever,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • Node.js 应用跑得更快 10 个技巧

    Node.js 应用跑得更快 10 个技巧

    Node.js 受益于它的事件驱动和异步的特征,已经很快了。本文将介绍 10 条,经过检验得知可大大提高 Node 应用的技巧。废话不多说,让我们逐条来看看
    2016-04-04

最新评论