17

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

现在我正在寻找从 node.js 向手机号码发送验证码,但我不知道该怎么做。

是否有任何模块可以将验证码发送到手机号码,例如 nodemailer 使用电子邮件地址?或者如果没有,我自己怎么能做到这一点?

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

4

5 回答 5

5

大多数运营商都提供了一个 SMS 网关,您可以向该网关发送电子邮件并使其以 SMS 的形式到达。如果您想要一种适用于当前 nodemailer 实现的免费 SMS 发送方式,这可能是您的最佳选择。否则,您可能想要搜索可以集成的付费 SMS 服务。

以下是 SMS 网关列表:http ://en.wikipedia.org/wiki/List_of_SMS_gateways

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

于 2013-02-09T14:48:28.107 回答
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);
});
于 2017-07-13T07:29:01.243 回答
3

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

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

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

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

使用 Nexmo 验证代码将是:

发送验证请求

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);
  }
});
于 2017-01-18T11:16:11.713 回答
1

您可以使用味精 91服务。它还提供OTP验证服务。

于 2021-01-19T13:57:45.603 回答
-1

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

现在将接收者的手机号码用于批量消息,您也可以将其用作验证和 OTP 目的。

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

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);
});

于 2019-04-04T04:51:42.970 回答