nodejs通过 智验科技API 向用户发送验证码

在学习上不肯钻研的人是不会提出问题的,在事业上缺乏突破力的人是不会有所创新的。

先简单说一下今天的事情,在一个订单页面的开发过程中,我突发奇想的希望能通过前端的技术向用户发送验证码

于是我整个晚上都着力于这个需求的思路与实现方式:

  1:验证码的数据肯定不能存在于html页面以及js文件中,我觉得这是一个安全性的问题,所以验证码数据应该由后台自动生成,那么在我应该使用哪种后端语言?

  2:在日常生活中,发送短信肯定是有费用的,所以我们肯定是不可能通过一两段代码就免费的将验证码发送到用户手机的,那么验证码的数据应该怎样发送到用户指定的手机号码中呢?

思路解答:

  1:我所接触到的后端语言包括:大学时期学习的c#,java以及在前端工作中熟悉的nodejs。所以作为前端开发人员的我最终还是选择了使用nodejs来搭建服务器发送验证码数据,所以这篇文章主要讲解的也就是如何使用nodejs向用户发送验证码数据。当然其他后端语言肯定也有相应的发送验证码的解决方案。

  2:差不多一个多月前在开发过程中曾需要用到GPS定位,所以当时学习了一下百度地图API,鉴于这个经历,我很快想到,网络上肯定会有相应的第三方可以帮助我。通过度娘的全力支持,我最终查询到两款API可以帮助发送验证码。分别是  智验科技  与  云通讯  。由于在云通讯中暂时只有PHP、java、Python、C#的demo示例,而智验科技中除了支持云通讯中所支持的四种后台语言外,还支持go以及nodejs,所以我最终选择了智验科技。但智验科技有一点不好,就是nodejs的demo示例中没有详细的注释,但通过查看demo与自己联系,我还是将其弄清楚了,下面就详细介绍下 如何通过智验科技发送验证码。

最终学习结果:

第一步、智验科技注册

  智验官方网址:http://www.zhiyan.net/

  注册邀请码:273A7G (激活邀请码可获赠免费短信。当然这个邀请码是我的,你们愿不愿意填这个由你们自己决定。)

第二步、创建APP应用

  登录后,进入 管理中心 ,点击左侧 应用管理 ,再 创建应用 。创建应用里面就自己填写,不做过多说明了。

第三步、自定义短信签名

  同样进入 管理中心 ,点击左侧 短信签名 , 再 新增签名 。(没有签名,短信可是发送不成功的。)

第四步、编写nodejs配置

1.首先编写sms_send模块,该模块最终会返回模块中的对象

文件名:sms_send.js

//导入request模块与crypto模块  *注解1

var request = require(‘request‘);
var crypto = require(‘crypto‘);

var zy = {
  config: {},
  set setConfig(config) {
    this.config = config;
  },
  sendSms: function(mobile, code, callback) {
    var timestamp = Math.round(new Date().getTime()/1000);  
    var sign = crypto.createHash(‘md5‘).update(this.config.appKey + this.config.token
    + this.config.templateId + mobile + code + timestamp, ‘utf8‘).digest("hex");
    var url = ‘https://sms.zhiyan.net/sms/sms/single/‘ + this.config.appKey + ‘/‘ +
    this.config.token + ‘/‘ + this.config.templateId + ‘?timestamp=‘ + timestamp + ‘&sign=‘ + sign;
    var data = JSON.stringify({
      mobile: mobile,
      param: code,
      extend: ‘‘
    });
    var opt = {
      rejectUnauthorized: false,
      url: url,
      method: ‘POST‘,
      form: {
        data: data
      }
    };
    request(opt, callback);
  }
};
module.exports = zy;

2.执行文件导入sms_send模块,调用其内的方法并传递参数。

文件名:test.js

//导入sms_send模块

var zy = require(‘sms_send.js‘);

//配置

zy.setConfig = {

  //appKey 登录后可以在 管理中心→账号信息 中进行查看
  appKey: ‘**************************‘,

  //taken 登录后可以在 管理中心→应用管理 中进行查看
  token: ‘************‘,

  //templateId  这个就是你的短信签名了, 登录后可以在 管理中心→短信签名 中进行查看

  templateId: ‘*******‘

};

/**

/*发送短信

/*phone 接受短信的用户手机号码

/*code 发送的验证码数据(怎么生成就自己来了)

/*callback 回调函数

*/

zy.sendSms(

  phone,

  code,

  /**

  /*回调函数

  /*err 错误信息(如网络连接问题……)

  /*data 所有数据(验证码发送结果存在与body中)

  /*mess 验证码发送结果

  /*(data中存放着所有返回参数,而mess中只存放着验证码发送结果的json字符串。json字符串又通过JSON.parse()来转换成json取值)

  */

  function(err,data,mess){

    if(err){

      console.log(err);

    }else{

      //console.log(data);

      //console.log(mess);

      console.log(JSON.parse(data.body).reason);   
      console.log(JSON.parse(mess).reason);

    }
  }

);

3.程序运行结果

a.未连接网线时报错,打印完整err:

b.函数执行成功,打印完整data(内容太多,就随便截图展示下了):

c.函数执行成功,打印完整mess:

这里因为我也是才注册的账号,才申请的签名,所以不能成功发送,但是这个返回值可以确定,我的使用时正确的。

等我的短信签名审核通过以后,我再重新试试。

好了,nodejs通过 智验科技 向用户发送短信验证码就聊到这里了。

此文全部由我手打,大家有疑问或者发现我哪里有错误的还希望踊跃提出,大家一起学习,一起进步。

*注解1:在导入request模块时我的nodejs报错了,首先是报没有找到request模块,然后又报其他错误,所以这里多说两句,如果你们上面的程序运行成功,那么可以不看这段注解。

  a.更新nodejs。从 https://nodejs.org/en/ 网站上进行下载安装。

  b.在cmd中进入当前项目文件,npm install request。

时间: 2024-10-16 03:46:37

nodejs通过 智验科技API 向用户发送验证码的相关文章

CDIF灵长科技 API 管理解决方案技术白皮书

灵长科技 API 管理解决方案的核心技术是具备中美知识产权保护的,名为通用设备互联框架(CDIF:common device interconnect framework)的软件框架,目前有部分开源实现存放在:https://github.com/out4b/cdif(注:开源部分遵守相关开源代码许可协议).CDIF 是世界上第一种基于 REST 和 JSON 的 SOA软件框架,提供了与基于XML 的 WSDL 语言和 SOAP 协议同等抽象能力.但简洁得多的基于JSON 的实现,也非常适合用

Nodejs RESTFul架构实践之api篇(转)

why token based auth? 此段摘自 http://zhuanlan.zhihu.com/FrontendMagazine/19920223 英文原文 http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs–cms-22543 在讨论了关于基于 token 认证的一些基础知识后,我们接下来看一个实例.看一下下面的几点,然后我们会仔细的分析它: 多个终端,比如一个 web

Nodejs RESTFul架构实践之api篇

why token based auth? 此段摘自 http://zhuanlan.zhihu.com/FrontendMagazine/19920223 英文原文 http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs–cms-22543 在讨论了关于基于 token 认证的一些基础知识后,我们接下来看一个实例.看一下下面的几点,然后我们会仔细的分析它: 多个终端,比如一个 web

Android黑科技,读取用户短信+修改系统短信数据库

安卓系统比起ios系统最大的缺点,相信大家都知道,就是系统安全问题.这篇博客就秀一波“黑科技”. 读取用户短信 Android应用能读取用户手机上的短信,相信已经不是什么新鲜事,比如我们收到的短信验证码,一些app马上就能自动获取并填上验证码,省去我们手动填写验证码.原理就是通过Android的ContentProvider组件间接访问系统的短信数据库,获取所有短信内容.下面来演示一下. 布局很简单,如下: 代码如下: public class MainActivity extends Acti

Ceph Object Gateway Admin api 获取用户列表问题

按照官方文档使用Admin Ops API 获取用户列表 GET /admin/user时 返回{code: 403, message: Forbidden} 这里有两个问题:首先用户列表的请求为 如下方式 : GET /admin/metadata/user 其次 需要配置管理用户的metadata的读取权限: radosgw-admin caps add --uid=admin --caps="metadata=read" 一句话:#You must use GET /admin/

体验福特福克斯Co-Pilot360全方位智驾科技辅助系统

福克斯所配置的驾驶辅助系统官方名称为"福特 Co-Pilot360全方位智驾科技辅助系统",这是一套符合美国汽车工程师协会所定义的Level 2的自动驾驶辅助系统 以ACC主动式巡航与车道导正辅助为主.ACC部分在时速超过30km/h之后就可起动,可控制时速为0~200km/h,简单说就是可以减速到停下来的意思:而福特称为LCA(Lane-Centering Assist)的车道导正辅助系统,做动时速与ACC相同,可以主动控制车辆沿著道路标线行驶,前提是道路需有完整标线,简单说就是系统

JWT 实现基于API的用户认证

基于 JWT-Auth 实现 API 验证 如果想要了解其生成Token的算法原理,请自行查阅相关资料 需要提及的几点: 使用session存在的问题: session和cookie是为了解决http无状态的方案.session是用户保存在服务器中的状态信息,cookie中则保存jsessionId,请求服务器时,服务器读取jsessionId从而确定用户的身份信息,而session+cookie用在restful接口上破坏了其“无状态”的特性,session运行时都是保存在内存中,而随着认证用

C#调用API向外部程序发送数据

C#调用API向外部程序发送数据 最近有可能要做一个项目.在项目中有这么一个功能,在A程序中调用B程序,同时在A程序中进行登陆后,要将A程序的登录名和密码自动填充到B程序的登陆对话框中,这样B程序就不需要再输入一次用户名和密码了,简化操作人员的操作.刚好最近闲着没事,就在怎么想怎么去实现.经过两天的折腾,基本上完成了上述功能的实现.下面就把实现方法.过程与大家进行分享. 一.原理 要实现上述功能,需要调用Win API来实现.Win32 API即为Microsoft 32位平台的应用程序编程接口

微信公众平台接口教程:获取用户发送的地理位置xml

微信公众平台接口获取用户发送的地理位置xml 实现的功能就是,当用户向我的公众平台发送一个当前位置,我要在卫星API中获取这个位置的经度纬度(x,y)然后通过这个经纬度接百度地图接口查询这个位置附近的饭店有哪些. 说白了,就是食神摇摇的那个功能.先贴上,用户向公众平台发送的位置的xml 1 <xml> 2 <ToUserName><![CDATA[toUser]]></ToUserName> 3 <FromUserName><![CDATA