一、使用备用手机号码接收验证码

备用手机号码是目前获取短信验证码最常用的替代手机号码方式之一。许多网站和app会让用户填写备用手机号码,在用户无法接收短信验证码的情况下,向备用手机号码发送验证码。

使用备用手机号码接收验证码的优点是方便快捷,用户不需要另外进行任何操作即可接收验证码,缺点是需提前设置备用手机号码,且钓鱼网站可能会诱骗用户填写虚假备用手机号码。


//使用第三方库twilio发送短信验证码
const client = require('twilio')(accountSid, authToken);
client.messages
  .create({
     body: 'Your verification code is: 123456',
     from: '+15017122661',  //发送者号码
     to: '+15558675310'    //接收者号码
   })
  .then(message => console.log(message.sid));

二、使用邮件接收验证码

一些网站和app也提供了通过邮件接收验证码的功能。用户在填写注册信息时可选择邮件接收验证码,系统将验证码发送至用户绑定的邮箱。

使用邮件接收验证码的优点是注册过程方便,用户可以通过记住自己的邮箱地址快速接收验证码。缺点是有可能由于邮箱问题导致接收时延滞或无法接收验证码。


//使用第三方库nodemailer发送短信验证码
const nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'example@gmail.com',
        pass: 'examplepassword'
    }
});

let mailOptions = {
    from: 'example@gmail.com',
    to: 'toexample@gmail.com',
    subject: '验证码',
    text: 'Your verification code is: 123456',
};

transporter.sendMail(mailOptions, function(error, info){
    if (error) {
      console.log(error.message);
    } else {
      console.log('Email sent: ' + info.response);
    }
});

三、使用Google Authenticator

Google Authenticator是一种通过手机应用程序生成动态口令的身份验证系统。使用Google Authenticator需要用户先下载并安装该应用程序,并在注册时将其设置为可用身份验证方式,通过输入动态口令来验证身份。

使用Google Authenticator的优点是安全,在网络攻击时,短信可能会被黑客截取,Google Authenticator则有效避免了该问题。缺点是使用的双方都需要装有Google Authenticator应用程序。


//使用第三方库speakeasy生成谷歌 Authenticator 动态令牌
const speakeasy = require('speakeasy');

const secret = speakeasy.generateSecret({length: 20}).base32;
console.log(`Secret: ${secret}`);

const token = speakeasy.totp({
    secret: secret,
    encoding: 'base32'
});

console.log(`Token: ${token}`);

四、使用第三方短信平台接收验证码

许多互联网公司已经开始集成第三方短信平台,通过第三方短信平台发送短信验证码。同时,第三方短信平台也可以接收用户的验证码,方便用户随时获取。

使用第三方短信平台接收验证码的优点是快速和准确,因为它们专门经营短信和验证服务,可以提供更可靠的服务和技术支持。缺点是用户需要注册第三方短信平台,并进行额外的管理。


//使用第三方库vefiryAPI接收验证码信息
const verifyAPI = require('verifyAPI');

const api = verifyAPI('your_api_key');

// 发起获取 message 的请求
api.get('message', { messageId: 'message_id' })
  .then((message) => console.log(message.body));

五、使用扫码登录

一些互联网公司提供了基于扫码的登录方式,即用户用一台联网的手机扫描电脑生成的二维码后即可登录系统。该方式不需要发送验证码,只需通过手机完成扫码即可实现登录。

使用扫码登录的一大优点是简单和安全。用户不需要进行操作和接收短信,且用户只有在有权限的情况下才能扫码。缺点是扫码登录需要授权的应用程序提供支持。


//使用QRCode.js生成扫描二维码
const QRCode = require('qrcode');

QRCode.toCanvas(canvas, 'sample text', function (error) {
  if (error) console.error(error)
  console.log('QRCode generated!')
})