The Power of QR Codes in Node.js

QR codes have become a ubiquitous part of our daily lives, from scanning tickets to accessing information. In this article, we’ll explore the world of QR codes in Node.js and how to harness their power to store and share information efficiently.

Generating QR Codes with Node.js

To generate QR codes in Node.js, we’ll use the popular qrcode library. First, let’s install it using npm:

npm install qrcode

Now, we can use the toFile method to generate a QR code image file:


const qrcode = require('qrcode');

qrcode.toFile('output.png', 'https://example.com', {
  color: {
    dark: '#000',
    light: '#fff'
  }
}, function (err) {
  if (err) throw err;
  console.log('QR code generated!');
});

This code generates a QR code image file named output.png with the specified text and error correction level.

Reading QR Codes with Node.js

To read QR codes in Node.js, we’ll use the qrcode-reader and jimp libraries. First, let’s install them using npm:

npm install qrcode-reader jimp

Now, we can use the decode method to read a QR code from an image file:


const qrcodeReader = require('qrcode-reader');
const Jimp = require('jimp');

Jimp.read('input.png', function (err, image) {
  if (err) throw err;
  qrcodeReader.decode(image.bitmap, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

This code reads a QR code from an image file named input.png and logs the result to the console.

Using QR Codes for Authentication

QR codes can be used for authentication purposes, such as signing in to a web application. We can create a Node.js server that generates a QR code with a secret key and then verifies the user’s identity when they scan the QR code.

First, let’s create a new Node.js project and install the required dependencies:

npm init -y
npm install express jsonwebtoken nodemon

Next, let’s create a controller function that generates a QR code with a secret key:


const express = require('express');
const jwt = require('jsonwebtoken');
const qrcode = require('qrcode');

const app = express();

app.post('/login', function (req, res) {
  const secret = req.body.secret;
  const token = jwt.sign({ secret }, 'ecretkey', { expiresIn: '1h' });
  qrcode.toDataURL(token, function (err, qrCode) {
    if (err) throw err;
    res.send(qrCode);
  });
});

This code generates a QR code with a secret key and signs it with a JSON Web Token (JWT). When the user scans the QR code, we can verify their identity by checking the JWT signature.

With these examples, you can see how QR codes can be used to store and share information efficiently in Node.js applications. Whether it’s generating QR codes for authentication or reading them from images, the qrcode and qrcode-reader libraries make it easy to work with QR codes in Node.js.

Leave a Reply