如何将验证码发送到node.js中的手机号码? (像nodemailer,但是对于SMS)

问题描述 投票:11回答:4

我已经通过使用nodemailer为我的项目向用户发送了确认电子邮件。它工作正常。

现在我希望从node.js向移动号码发送验证码,但我不知道该怎么做。

是否有任何模块可以向移动号码发送验证码,例如nodemailer是否使用电子邮件地址?如果没有,我怎么能自己做?

我使用node.js和mongodb,JavaScript和jQuery开发我的项目。

javascript node.js sms-gateway
4个回答
5
投票

NodeJS包https://www.npmjs.com/package/springedge将很容易发送短信。你可以安装为

npm install springedge

发送短信的代码示例:

// send sms 

var springedge = require('springedge');

var params = {
  'apikey': '', // API Key 
  'sender': 'SEDEMO', // Sender Name 
  'to': [
    '919019xxxxxxxx'  //Moblie Number 
  ],
  'message': 'test+message'
};

springedge.messages.send(params, 5000, function (err, response) {
  if (err) {
    return console.log(err);
  }
  console.log(response);
});

4
投票

大多数运营商都提供了一个SMS网关,您可以通过该网关发送电子邮件并将其作为短信到达。如果您想要一种免费的方式发送适用于您当前的节点制作者实现的SMS,这可能是您的最佳选择。否则,您可能希望搜索可以与之集成的付费SMS服务。

这是一个SMS网关列表:http://en.wikipedia.org/wiki/List_of_SMS_gateways

从链接的维基百科页面:例如,要发送到通常在美国表示为987-555-0100的号码,可以发送电子邮件至9875550100 @ SMS-gateway。


2
投票

为了确保您可以访问用户移动设备,无论他们的位置和网络如何,您可能需要查看付费服务,例如Nexmo(我工作的人)或Twilio

使用这些服务,您可以构建自己的验证(2FA - 双因素身份验证)工作流程:

  1. 用户在表单中输入他们的电话号码并提交到您的应用程序
  2. 您的应用会收到电话号码
  3. 您向用户发送带有身份验证代码的SMS
  4. 用户收到验证码
  5. 用户将身份验证代码输入表单并提交到您的应用程序
  6. 您的应用程序收到验证码并根据电话号码检查验证码(可能使用当前的会话电话号码)
  7. 如果验证代码是您所期望的代码,则验证用户

或者您可以使用他们的2FA身份验证产品(Nexmo - Verify或Twilio - Authy,这应该有助于简化此工作流程。

使用Nexmo验证代码将是:

Send Verification Request

var Nexmo = require('nexmo');
var nexmo = new Nexmo({apiKey: API_KEY, apiSecret: API_SECRET});

var verifyRequestId = null; // use in the check process

nexmo.verify.request({number: TO_NUMBER, brand: APP_NAME}, function(err, result) {
  if(err) { console.error(err); }
  else {
    verifyRequestId = result. request_id;
  }
});

检查验证码

nexmo.verify.control({request_id: verifyRequestId, cmd: 'cancel'}, function(err, result) {
  if(err) { console.error(err); }
  else {
    console.log(result);
  }
});

0
投票

对于测试,您应该使用此API https://www.fast2sms.com,但您也可以将其用作业务。在运行以下代码之前,请确保您已生成有效的API授权密钥,并且您应该免费注册。

现在将接收者的移动号码放在批量消息中,您也可以将其用作验证和OTP目的。

在项目中安装npm模块,您要在其中实现SMS系统。

npm install unirest

GET方法代码:

var unirest = require("unirest");

var req = unirest("GET", "https://www.fast2sms.com/dev/bulk");

req.query({
  "authorization": "YOUR_API_KEY",
  "sender_id": "FSTSMS",
  "message": "This is a test message",
  "language": "english",
  "route": "p",
  "numbers": "9999999999,8888888888,7777777777",
});

req.headers({
  "cache-control": "no-cache"
});

req.end(function (res) {
  if (res.error) throw new Error(res.error);

  console.log(res.body);
});

POST方法代码:

var unirest = require("unirest");

var req = unirest("POST", "https://www.fast2sms.com/dev/bulk");

req.headers({
  "authorization": "YOUR_API_KEY"
});

req.form({
  "sender_id": "FSTSMS",
  "message": "This is a test message",
  "language": "english",
  "route": "p",
  "numbers": "9999999999,8888888888,7777777777",
});

req.end(function (res) {
  if (res.error) throw new Error(res.error);

  console.log(res.body);
});
© www.soinside.com 2019 - 2024. All rights reserved.