阿里云:云通信号码认证服务,node.js+uniapp(vue),完整代码

api文档:云通信号码认证服务_云产品主页-阿里云OpenAPI开发者门户 (aliyun.com)

 reg.vue

<template>  
  <div>  
   <input class="sl-input" v-model="phone" type="number" maxlength="11" placeholder="手机号" /> 
    <button @click="sendSms">短信注册</button>  
  </div>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      phone: '', // 用于绑定输入框的值  
    };  
  },  
  methods: {  
    sendSms() {  
      uni.request({  
        url: 'http://localhost:3000/valisms', // 你的后端服务地址  
        method: 'POST',  
        data: {  
          phoneNumbers: this.phone,  
        },  
        success: (res) => {  
          if (res.data.success) {  
            console.log('短信发送成功:', res.data.response);  
            uni.showToast({  
              title: '短信发送成功',  
              icon: 'success'  
            });  
          } else {  
            console.log('短信发送失败:', res.data.message);  
            uni.showToast({  
              title: '短信发送失败',  
              icon: 'none'  
            });  
          }  
        },  
        fail: (err) => {  
          console.error('发送请求失败:', err);  
          uni.showToast({  
            title: '请求失败',  
            icon: 'none'  
          });  
        }  
      });  
    },  
   
  },  
};  
</script>  
  
<style scoped>  
  
</style>

sendSms() {
             console.log('电话号:',this.phone);
              uni.request({
                url: 'http://localhost:3000/valisms', // 你的后端服务地址
                method: 'POST',
                data: {
                  phoneNumbers:this.phone ,
                },
                success: (res) => {
                  if (res.data.success) {
                    console.log('短信发送成功:', res.data.response);
                    uni.showToast({
                      title: '短信发送成功',
                      icon: 'success'
                    });
                  } else {
                    console.log('短信发送失败:', res.data.message);
                    uni.showToast({
                      title: '短信发送失败',
                      icon: 'none'
                    });
                  }
                },
                fail: (err) => {
                  console.error('发送请求失败:', err);
                  uni.showToast({
                    title: '请求失败',
                    icon: 'none'
                  });
                }
              });
            },

 cloudsms.js:

'use strict';

const Dypnsapi20170525 = require('@alicloud/dypnsapi20170525');
const OpenApi = require('@alicloud/openapi-client');
const Console = require('@alicloud/tea-console');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');

class Client {
  static createClient() {
    let config = new OpenApi.Config({
      accessKeyId: 'xxxxxxxx',
      accessKeySecret: 'xxxxxxxx',
    });
    config.endpoint = `dypnsapi.aliyuncs.com`;
    return new Dypnsapi20170525.default(config);
  }
  static async cloudSms(phoneNumbers, code) {
    let client = Client.createClient();
    console.log('验证码是:',code);
    let sendSmsVerifyCodeRequest = new Dypnsapi20170525.SendSmsVerifyCodeRequest({
      phoneNumber: phoneNumbers,
      signName: '',
      templateCode: '',
      templateParam: JSON.stringify({ code:code }),
    });
    let runtime = new Util.RuntimeOptions({ });
    try {
      let resp = await client.sendSmsVerifyCodeWithOptions(sendSmsVerifyCodeRequest, runtime);
      Console.default.log(Util.default.toJSONString(resp));
    } catch (error) {
      console.log(error.message);
      console.log(error.data["Recommend"]);
      Util.default.assertAsString(error.message);
    }
  }
}
module.exports = Client;
// exports.Client = Client;
// Client.smscloud(process.argv.slice(2));

 

 cloudserver.js:


const express = require('express');
const bodyParser = require('body-parser');
const ClientSms   = require('./cloudsms.js');

const app = express();
const port = 3000;
app.use(bodyParser.json());
app.post('/valisms', async (req, res) => {
  const { phoneNumbers} = req.body;
  console.log('电话号:',phoneNumbers);
  const code = Math.floor(100000 + Math.random() * 900000).toString();  
  console.log('验证码是:',code);
  try {
    const response = await ClientSms.cloudSms(phoneNumbers, code);
    res.json({ success: true, message: '短信发送成功', response });
  } catch (error) {
    console.error('短信发送失败的具体原因:', error);
    res.status(500).json({ success: false, message: '短信发送失败' });
  }
});
app.listen(port, () => {
  console.log(`Server running on http://localhost:${port}`);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/761863.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

几度互联网站群管理系统全媒体解决方案

随着高考的结束&#xff0c;各高校开启了紧张的招生宣传工作&#xff0c;几度互联网站群系统助力各高校招生宣传。 学校官方网站是互联网时代学校对外交流的重要途径和信息公开的主要载体&#xff0c;是展示学校形象、密切联系师生的重要窗口&#xff0c;是加强校园宣传思想工…

2024 年的 13 个 AI 趋势

2024 年的 13 个 AI 趋势 人工智能对环境的影响和平人工智能人工智能支持的问题解决和决策针对人工智能公司的诉讼2024 年美国总统大选与人工智能威胁人工智能、网络犯罪和社会工程威胁人工智能治疗孤独与对人工智能的情感依赖人工智能影响者中国争夺人工智能霸主地位人工智能…

LVGL实现字库的下载和使用

1 字库 字库的概念&#xff1a;相应文字或字符的合集。 点阵字库&#xff1a;按字库顺序排列的字符/汉字字模的合集。 LVGL中字库使用Unicode编码&#xff0c;Unicode 是全球文字统一编码。它把世界上的各种文字的每一个字符指定唯一编码&#xff0c;实现跨语种、跨平台的应…

分体式天线的应用介绍

分体式天线的主要应用广泛且多样化&#xff0c;以下是对其主要应用的归纳&#xff1a; 1、仓储管理 在RFID仓储项目中&#xff0c;使用性能好的RFID分体式天线可以确保系统的稳定性&#xff0c;更能够降低整个项目的成本。 分体式天线通过其多个天线接口与分体式读写器连接&…

K-Planes代码记录

随记 原文 K-Planes: Explicit Radiance Fields in Space, Time, and Appearance&#xff0c;又要换baseline&#xff0c;可是效果不好能怎么办呢&#xff0c;我可不可以发疯。k-planes的代码又是非常工程琐碎的&#xff0c;大佬的代码果然不顾小白死活。随便记录下整个过程。…

哪个牌子的超声波清洗器好?精选四大超强超声波清洗机力荐

生活中戴眼镜的人群不在少数&#xff0c;然而要维持眼镜的干净却不得不每次都需要清洗&#xff0c;只是通过手洗的方式实在太慢并且容易操作不当让镜片磨损更加严重&#xff01;所以超声波清洗机就诞生了&#xff01;超声波清洗机能够轻松清洗机眼镜上面的油脂污渍&#xff0c;…

Spire.PDF for .NET【文档操作】演示:在 PDF 中创建目录 (TOC)

目录在增强文档的可读性和可导航性方面起着至关重要的作用。它为读者提供了文档结构的清晰概述&#xff0c;使他们能够快速找到并访问他们感兴趣的特定部分或信息。这对于较长的文档&#xff08;例如报告、书籍或学术论文&#xff09;尤其有价值&#xff0c;因为读者可能需要多…

国产压缩包工具——JlmPackCore SDK说明(二)——JlmPack_Create函数说明

一、JlmPack_Create函数说明 JlmPack_Create函数是创建jlm压缩文件的核心函数&#xff0c;最大允许CATALOG_MAX_LIMIT&#xff08;请参考Config.h&#xff09;个目录&#xff0c;意思是包括文件夹和文件在内&#xff0c;遍历整个列表最大允许CATALOG_MAX_LIMIT个目录对象&#…

【Unity小技巧】Unity字典序列化

字典序列化 在 Unity 中&#xff0c;标准的 C# 字典&#xff08;Dictionary<TKey, TValue>&#xff09;是不能直接序列化的&#xff0c;因为 Unity 的序列化系统不支持非 Unity 序列化的集合类型。可以通过手写字典实现 效果&#xff1a; 实现步骤&#xff1a; 继承ISe…

2024年制冷与空调设备运行操作证模拟考试题库及制冷与空调设备运行操作理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年制冷与空调设备运行操作证模拟考试题库及制冷与空调设备运行操作理论考试试题是由安全生产模拟考试一点通提供&#xff0c;制冷与空调设备运行操作证模拟考试题库是根据制冷与空调设备运行操作最新版教材&#…

振弦采集仪的工程安全监测实践与案例分析

振弦采集仪的工程安全监测实践与案例分析 振弦采集仪是一种常用的工程安全监测仪器&#xff0c;通过测量被监测结构的振动频率与振型&#xff0c;可以实时监测结构的安全状况。本文将结合实践经验和案例分析&#xff0c;探讨振弦采集仪在工程安全监测中的应用。 一&#xff0c…

奔驰G350升级原厂自适应悬挂系统有哪些作用

奔驰 G350 升级自适应悬挂系统后&#xff0c;可根据行车路况自动调整悬架高度和弹性&#xff0c;从而提升驾乘的舒适性和稳定性。 这套系统的具体功能包括&#xff1a; • 多种模式选择&#xff1a;一般有舒适、弯道、运动及越野等模式。例如&#xff0c;弯道模式在过弯时能为…

elk对于集群实例的日志的整合-基于logstash采集日志

说明&#xff1a;基于logstash采集日志 环境&#xff1a; 物理机192.168.31.151 一.启动2个测试实例&#xff0c;每5-10s随机生成一条订单日志 实例一 包位置&#xff1a;/home/logtest/one/log-test-0.0.1-SNAPSHOT.jar 日志位置:/docker/elastic/logstash_ingest_data/l…

塑造卓越企业家IP:多维度视角下的策略解析

在构建和塑造企业家IP的过程中&#xff0c;我们需要从多个维度进行考量&#xff0c;以确保个人品牌能够全面、立体地展现企业家的独特魅力和价值。以下是从不同角度探讨如何做好一个企业家IP的策略。 一、从个人特质出发 深入了解自我&#xff1a;企业家需要清晰地认识到自己的…

树立行业标杆,林清轩获“以油养肤开创者”市场地位认证

从0到1的创造&#xff0c;才能快速实现从1到100的裂变&#xff0c;这是亘古不变的商业逻辑。 6月25日&#xff0c;知名美妆国货品牌林清轩&#xff0c;获得了CIC灼识的市场地位确认书&#xff0c;确定“以油养肤开创者” 的地位。 近两年&#xff0c;以油养肤的概念逐渐兴起&am…

vivado VIO IP核

参考&#xff1a;pg159 VIO&#xff1a;可以模拟输入/输出功能&#xff0c;实时监视和修改FPGA中的信号&#xff0c;用于调试和验证&#xff0c;与ILA相比&#xff0c;VIO无需占用RAM资源。 VIO IP的输出对于FPGA内部逻辑是输入信号&#xff0c;可以在调试界面设置输入值&…

免费管饱不折腾,无公网NAS访问攻略,国产品牌异地自动组网技巧

前言 说起远程桌面、异地组网、内网穿透等等服务&#xff0c;大家脑海中第一反应是哪款产品&#xff0c;确实&#xff0c;现在市面上同类产品不少&#xff0c;但同时支持组网跟穿透的产品几乎没有。节点小宝作为一款创新型的远程管理工具&#xff0c;凭借其使用简单&#xff0…

欧盟《净零工业法案》通过,全球清洁能源市场迎来新格局

2024年5月27日&#xff0c;欧盟理事会正式通过《净零工业法案》&#xff0c;这意味着欧盟在推动工业绿色转型方面迈出了具有决定性的一步。这一法案的通过&#xff0c;不仅对欧盟的净零排放目标具有深远影响&#xff0c;也将对全球清洁能源市场产生重大影响。 《净零工业法案》…

2024年6月27日~2024年7月1日周报

目录 一、前言 二、完成情况 2.1 生成速度模型剖面图 2.2 吴恩达机器学习系列课程 2.2.1 介绍 2.2.1.1 机器学习 2.2.1.2 监督学习 2.2.1.3 无监督学习 2.2.2 单变量线性回归 2.2.2.1 模型表示 2.2.2.2 代价函数 2.2.2.3 梯度下降 2.2.2.4 梯度下降的线性回归 2.…