As of my last knowledge update in January 2022, I can provide you with a general guideline on how to integrate Google reCAPTCHA with Node.js. Keep in mind that the details may have changed, so it's always a good idea to refer to the official documentation for the most up-to-date information.
Here's a step-by-step guide on how you might integrate Google reCAPTCHA with a Node.js application:
-
Get reCAPTCHA API Key:
- Visit the reCAPTCHA website and sign in with your Google account.
- Click on the "+" icon to create a new site.
- Choose the type of reCAPTCHA (v2 "I'm not a robot" Checkbox or v3) and fill in the required information.
- Accept the reCAPTCHA Terms of Service and click on the "Submit" button.
- After submission, you will be provided with the "Site Key" and "Secret Key." Keep these keys secure.
-
Set Up Node.js Project:
- Create a new Node.js project if you haven't already:
mkdir your-project-name cd your-project-name npm init -y
-
Install Dependencies:
- Install the necessary packages using npm:
npm install express body-parser axios
-
Create an Express Server:
- Create a simple Express server in your
index.js
orapp.js
file:
const express = require('express'); const bodyParser = require('body-parser'); const axios = require('axios'); const app = express(); const port = 3000; app.use(bodyParser.urlencoded({ extended: true })); app.use(express.static('public')); // Assuming your HTML file is in a 'public' directory app.get('/', (req, res) => { res.sendFile(__dirname + '/public/index.html'); }); app.post('/submit', async (req, res) => { const { grecaptchaResponse } = req.body; // Verify reCAPTCHA token const secretKey = 'YOUR_SECRET_KEY'; // Replace with your secret key const verificationURL = `https://www.google.com/recaptcha/api/siteverify?secret=${secretKey}&response=${grecaptchaResponse}`; try { const recaptchaResponse = await axios.post(verificationURL); const { success } = recaptchaResponse.data; if (success) { // Handle successful verification res.send('Success!'); } else { // Handle failed verification res.send('Failed verification. Please try again.'); } } catch (error) { console.error('Error verifying reCAPTCHA:', error); res.status(500).send('Internal Server Error'); } }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
- Create a simple Express server in your
-
Create HTML Form:
- Create an HTML file in the 'public' directory (or a directory specified in your server code) with a form that includes the reCAPTCHA widget:
<!-- public/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>reCAPTCHA Example</title> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </head> <body> <h1>reCAPTCHA Example</h1> <form action="/submit" method="post"> <!-- Your other form fields go here --> <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div> <br> <button type="submit">Submit</button> </form> </body> </html>
Replace
YOUR_SECRET_KEY and YOUR_SITE_KEY
with the actual keys you obtained from the reCAPTCHA website. -
Run Your Application:
- Start your Node.js application:
node index.js
- Visit http://localhost:3000 in your web browser and test the reCAPTCHA integration.
This is a basic example, and you might need to adjust it based on the specific requirements of your application. Make sure to check the latest reCAPTCHA documentation for any updates or changes.