我已经使用nodemailer为我的项目向用户发送了确认电子邮件。它工作正常。
现在我正在寻找从 node.js 向手机号码发送验证码,但我不知道该怎么做。
是否有任何模块可以将验证码发送到手机号码,例如 nodemailer 使用电子邮件地址?或者如果没有,我自己怎么能做到这一点?
我使用 node.js 和 mongodb、JavaScript 和 jQuery 开发我的项目。
我已经使用nodemailer为我的项目向用户发送了确认电子邮件。它工作正常。
现在我正在寻找从 node.js 向手机号码发送验证码,但我不知道该怎么做。
是否有任何模块可以将验证码发送到手机号码,例如 nodemailer 使用电子邮件地址?或者如果没有,我自己怎么能做到这一点?
我使用 node.js 和 mongodb、JavaScript 和 jQuery 开发我的项目。
大多数运营商都提供了一个 SMS 网关,您可以向该网关发送电子邮件并使其以 SMS 的形式到达。如果您想要一种适用于当前 nodemailer 实现的免费 SMS 发送方式,这可能是您的最佳选择。否则,您可能想要搜索可以集成的付费 SMS 服务。
以下是 SMS 网关列表:http ://en.wikipedia.org/wiki/List_of_SMS_gateways
从链接的 Wikipedia 页面:例如,要发送到通常在美国表示为 987-555-0100 的号码,可以发送电子邮件至 9875550100@SMS-gateway。
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);
});
为确保无论用户的位置和网络如何,您都可以通过移动设备访问用户,您可能需要查看付费服务,例如Nexmo(我为之工作)或Twilio。
使用这些服务,您可以构建自己的验证(2FA - 双因素身份验证)工作流程:
或者,您可以使用他们的 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);
}
});
您可以使用味精 91服务。它还提供OTP验证服务。
对于测试,您应该使用此 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);
});