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

news2024/9/21 10:39:41

阿里云官网步骤: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.coloradmin.cn/o/416956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

URL 以及 URLConnection 类的使用

1. 概述 java 提供了两个类,在这两个类里封装了大部分 Web 相关的各种操作。这两个类是 URL 类 和 URLConnection 类。2. URL 类 java.net.URL 类定义了一个统一的资源定位器,它是指向互联网“资源”的指针。可以定 位互联网上的资源。并且…

LInux一天10题 day1

su(switch user) 命令用于更改其他使用者身份, usermod -l 修改账号名称,使用格式:usermod -l new_name old_name 修改用户权限: 方法1 1、先切换到root权限的用户登录下,修改 /etc/sudoers 文件,找…

games103——作业1

实验一主要实现简单的刚体动画模拟(一只兔子),包括 impulse 的碰撞检测与响应,以及 Shape Matching方法。 完整项目已上传至github。 文章目录简单刚体模拟(不考虑碰撞)平移运动旋转运动粒子碰撞检测与响应碰撞检测碰撞响应Penalty MethodsQuadratic Pen…

如何安全的从硬盘恢复文件?

可以从硬盘中恢复永久删除的文件吗? “我删除了一些看起来不重要的文件夹,并清空了回收站。但在几天后,我意识到删除的文件夹里有些重要的数据。如何恢复永久删除的文件?谢谢!” 随着科技的进步与发展&#xff0c…

LeetCode 2404. 出现最频繁的偶数元素

原题链接:2404. 出现最频繁的偶数元素 给你一个整数数组 nums ,返回出现最频繁的偶数元素。 如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回 -1 。 示例 1: 输入:nums …

OpenAI团队抢着用的编程语言?

作为一名合格的(准)程序员,必做的一件事是关注编程语言的热度,编程榜代表了编程语言的市场占比变化,它的变化更预示着未来的科技风向和机会! 快一起看看本月排行有何看点: 4月Tiobe排行榜前15…

如何学习智能交通?

AI的专业领域知识是指AI与具体应用领域相结合时所需要的该应用领域的知识。AI的应用领域非常广泛,例如计算机视觉、智能交通、智能制造、智慧金融、智慧教育、智慧农业、智慧能源、智能通信、智能芯片等。本文主要介绍智能交通的基本概念、发展历程、主要研究内容、…

DAMA数据治理认证,一定要先考CDGA才能考CDGP吗?

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

react4:配置网络请求axios --- 配置@路径别名

1. axios 请求安装:npm i axios axios 二次封装:配置,拦截器等应用 在:utils文件夹下request.js中配置 //utils文件夹下request.js中配置//导入 axios import axios from "axios";//实例化axios var service axios.create({time…

QT5学习教程一——Hello World例子

一、打开 Qt Creator -文件-新建文件或项目-Application-Qt Widgets Application-选择,如图 1.1 图 1.2 将项目放到指定目录,便于管理。单击[下一步] 选择构建的环境,可以根据自己的配置来选择,本例子选择MSVC2015。MSVC是指微软的…

JAVA阶段考内容知识点的梳理

前言:这些都是很基本的,还有很多没有写出来,重点在于编程序理解。 目录 第一章概述 课堂总结 相关习题 第二章:语言基础 课堂总结 相关习题 第三章:类和对象 内容总结 相关习题 第四章:类的派生与…

【Linux】网络编程套接字(下)

🎇Linux: 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让你看见坚持…

【三十天精通 Vue 3】 第十天 Vue 状态管理详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录引言一、Vue 3 状态管理概述1.1 状态管理的概念1.2 状态管理的作用…

Spark基础 - 名词汇总及集群模式概述

原文地址: Spark基础 - 名词汇总及集群模式概述 本文档内容参考Spark官方文档:Cluster Mode Overview 一. Glossary(术语) TermMeaningcommentApplicationUser program built on Spark. Consists of a driver program and executors on the cluster.…

Springboot应用整合Sentinel实现限流、熔断、降级笔记

可以使用官方的sentinel 也可使用进行持久化改造后的Sentinel ,本文基于此进行记录。Sentinel持久化到Nacoshttps://blog.csdn.net/chenjian723122704/article/details/130098896 Sentinel版本为 1.8.6 Nacos版本为 2.2.0 关于网关限流、限流和熔断,我…

【Step1】Linux Kernel -基础

《Linux内核设计与实现.第3版》1-2章学习笔记 1. 获取内核源码 http://www.kernel.org 2. 内核版本命名规则 内核的版本号主要有四个数字组成。 从版本号: 偶数表示稳定版(可用于企业级环境),奇数表示开发版; 修订…

ack应答机制

ACK在 Kafka 中,ack(Acknowledgment)机制是指用于确认生产者发送的消息已经被成功写入到 Kafka 分区中的一种机制。生产者可以通过 ack 参数来控制这个机制,以便根据自己的需求进行设置。 ACK应答级别0:生产者发送过来…

手机号码归属地 API 实现个性化推荐的思路分析

前言 随着移动互联网和智能手机的普及,越来越多的人使用手机上网和购物,移动营销已成为企业获取用户和提升品牌知名度的重要手段。手机号码归属地 API 作为移动营销的关键工具,具有广阔的应用前景。 本文将探讨如何利用手机号码归属地 API …

IDEA配置MAVEN_OPTS

IDEA配置MAVEN_OPTS​ 解决问题 maven MAVEN_OPTS设置 maven编译优化 maven编译速度慢 maven打包编译很慢 maven多线程编译打包 IDEA Maven配置教程​​测试环境:Win10(64位) i7-7700HQ 16GB​​ 参考文章: ​​ ​JVM参数MetaspaceSize的误解​​ Java HotSpot™ 64-Bit Ser…

【AI浪潮下的挑战和机遇】许多职业即将消失,AI 即将战胜人类了吗?

文章目录前言一、人类科技发展史二、 AI浪潮下的挑战1. 数据安全和隐私保护问题2. 带来新的伦理和道德问题3. 版权和知识产权问题三、对传统行业和就业的冲击1.传统文本编辑行业受到冲击2.就业岗位的变化3.工作流程的变化4.创意版权问题四、AI浪潮下的机遇1.提高效率和创意性2.…