当前位置: 首页 > article >正文

node开通阿里云短信验证服务,代码演示 超级详细

阿里云官网步骤:Node.js SDK (aliyun.com)

首先先搭建一个node项目:app.js

const express = require('express'); // 引入 Express 框架

const app = express();
app.use(express.json()); // 解析请求中的 JSON 数据

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

安装阿里云SDK核心库

npm install @alicloud/pop-core -S

编辑app.js

const express = require('express'); // 引入 Express 框架
const Core = require('@alicloud/pop-core'); // 引入阿里云 SDK

const app = express();
app.use(express.json()); // 解析请求中的 JSON 数据

const client = new Core({ // 创建 Client 对象
  accessKeyId: 'your xxxxxx', // 替换成自己的 AccessKey ID
  accessKeySecret: 'your xxxxxx', // 替换成自己的 AccessKey Secret
  endpoint: 'https://dysmsapi.aliyuncs.com', // API 访问入口,根据实际情况修改
  apiVersion: '2017-05-25' // API 版本号,根据实际情况修改
});

// 生成随机验证码
function generateCode() {
  const code = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000;
  return code.toString();
}

// 发送短信验证码
app.post('/sendCode', (req, res) => {
  const phoneNumber = req.body.phoneNumber; // 获取手机号码
  const code = generateCode(); // 生成验证码

  const params = {
    "RegionId": "cn-hangzhou", // 短信服务所在区域,可以参考阿里云文档
    "PhoneNumbers": phoneNumber, // 目标手机号码
    "SignName": "your xxxxxx", // 短信签名名称,需先在阿里云控制台中申请审核通过
    "TemplateCode": "your xxxxxx", // 短信模板 CODE,需先在阿里云控制台中申请审核通过
    "TemplateParam": JSON.stringify({ // 短信模板参数,为 JSON 字符串格式
      "code": code // 模板中的变量名和对应的值
    })
  };

  const requestOption = { // 设置请求超时时间等选项
    method: 'POST',
    timeout: 5000
  };
  // 调用 SendSms 方法发送短信
  client.request('SendSms', params, requestOption).then((result) => { 
    console.log(result); // 打印发送结果

    res.status(200).json({ // 返回状态码和生成的验证码
      message: '验证码已发送,请注意查收!',
      code: code
    });
  }, (ex) => {
    console.log(ex); // 打印异常信息

    res.status(500).json({ // 返回错误状态码和错误信息
      message: '短信发送失败,请稍后重试!'
    });
  });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

 accessKeyId与accessKeySecret如何获取:

没有就创建一个,有就点击操作中的:查看 Secret


 endpoint与apiVersion到底是什么?

endpoint 参数指定了短信服务的 API 网关地址,即阿里云短信服务的接入点;而 apiVersion 参数指定了该 API 请求要使用的版本号

附上连接:短信服务_云产品主页-阿里云OpenAPI开发者门户 (aliyun.com)


SignName与TemplateCode哪里获取?

这两个都需要自己申请,阿里云中搜索短信服务就可以看到图下的操作页面,然后进行申请就好:

 通过之后点击图下的测试:

进去就可以看到了:

 然后用postman进行测试:如果余额不足就需要买个短信套餐

 在app.js中添加验证码校验请求:

const express = require('express'); // 引入 Express 框架
const Core = require('@alicloud/pop-core'); // 引入阿里云 SDK

const app = express();
app.use(express.json()); // 解析请求中的 JSON 数据

xxxxxxxxxxxxxxxxxxxxxxxxxx同上

// 验证短信验证码
app.post('/login', (req, res) => {
  const phoneNumber = req.body.phoneNumber; // 获取手机号码
  const inputCode = req.body.code; // 获取用户输入的验证码
  const generatedCode = req.body.generatedCode; // 获取之前生成的验证码

  console.log(inputCode)
  console.log(generatedCode)
  if (inputCode === generatedCode) { // 验证码一致,登录成功
    res.status(200).json({
      message: '登录成功!'
    });
  } else { // 验证码不一致,登录失败
    res.status(401).json({
      message: '验证码错误,请重新输入!'
    });
  }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

 用postman再进行测试:


http://www.kler.cn/a/9499.html

相关文章:

  • 时序论文20|ICLR20 可解释时间序列预测N-BEATS
  • Android 10 默认授权安装app运行时权限(去掉运行时所有权限授权弹窗)
  • 01:(手撸HAL+CubeMX)时钟篇
  • PNG图片批量压缩exe工具+功能纯净+不改变原始尺寸
  • 第一个 Flutter 项目(1)共46节
  • influxDB 时序数据库安装 flux语法 restful接口 nodjsAPI
  • 浅谈全局视角下的设计模式
  • VIM 编辑器使用教程
  • CMake入门教程【基础篇】4.target_include_directories包含指定文件夹头文件
  • 基于5G技术的智能导航机器人及AR巡逻应用开发项目实施方案(上)
  • linux 集群时间同步
  • 前端动态路由(前端控制全部路由,用户角色由后端返回)
  • 使用Docker快速创建一个Jenkins服务
  • 长文理解以太坊虚拟机
  • Android双目三维重建:Android双目摄像头实现双目测距
  • 走迷宫问题
  • 编写开发API接口
  • Halcon: (示例 1)OCR 字符识别
  • 【Pycharm基础运用】涵盖pycharm的常用功能
  • 初识设计模式 - 备忘录模式
  • 面试官灵魂拷问:为什么 SQL 语句不要过多的 join?
  • MyBatis-Plus的基本操作
  • 【AI绘图学习笔记】Latent Diffusion Model(上)——论文解读
  • 大模型“云上经济”之权力游戏
  • sipp3.6带媒体测试方案
  • 【华为OD机试真题】简单的自动曝光(javapython)