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