recaptcha-node
Version:
A Node.js library to verify reCAPTCHA v2/v3 response tokens received from a client.
97 lines (72 loc) • 3.22 kB
Markdown
# recaptcha-node
A Node.js library to verify reCAPTCHA v2/v3 response tokens received from a client.
[GitHub](https://github.com/jaredcrimmins/recaptcha-node) | [NPM](https://www.npmjs.com/package/recaptcha-node)
## Install
```shell
npm install recaptcha-node
```
## Usage
### Importing
If you are using reCAPTCHA v2, import the `RecaptchaV2` class.
```javascript
const {RecaptchaV2} = require('recaptcha-node');
```
If you are using reCAPTCHA v3, import the `RecaptchaV3` class.
```javascript
const {RecaptchaV3} = require('recaptcha-node');
```
### Verifying a Response Token
To verify a response token using either `RecaptchaV2` or `RecaptchaV3`, call the `verify` method.
The `verify` method's signature on `RecaptchaV2` and `RecaptchaV3` is nearly identical, differing only in the return value. `RecaptchaV2`'s `verify` method returns an instance of `RecaptchaV2Result`, and `RecaptchaV3`'s `verify` method returns an instance of `RecaptchaV3Result`.
```javascript
const {RecaptchaV2} = require('recaptcha-node');
const recaptchaV2 = new RecaptchaV2('secretKey');
recaptchaV2.verify('responseToken')
.then(result => {
if (result.success) {
// reCAPTCHA response was valid.
}
else {
// reCAPTCHA response was invalid.
}
})
.catch(error => {
// Request failed.
});
```
## Configuration
The `RecaptchaV2` and `RecaptchaV3` classes can be initialized with an options object as the second argument.
```javascript
const {RecaptchaV3} = require('recaptcha-node');
const recaptchaV3 = new RecaptchaV3('secretKey', {
hostname: 'google.com',
port: 443,
protocol: 'https',
timeout: 30 * 1000,
});
```
Name | Default | Description
---- | ------- | -----------
agent | `undefined` |
hostname | `google.com` | Hostname that requests are made to
port | `80` if `protocol` is `'http'`, `443` if `protocol` is `'https'` | Port that requests are made to
protocol | `'https'` | `'https'` or `'http'` | Protocol that requests are made with
timeout | `30000` | Milliseconds before a request times out. Setting to `0` will prevent the request from ever timing out
## Objects
### RecaptchaV2Result
Property | Type | Optional | Description
-------- | ---- | -------- | -----------
success | `boolean` | `false` | Whether this request was a valid reCAPTCHA token for your site
challengeTimestamp | `Date` | `false` | Timestamp of the challenge load
apkPackageName | `string` | `true` | The package name of the app where the reCAPTCHA was solved
hostname | `string` | `true` | The hostname of the site where the reCAPTCHA was solved
errorCodes | `string[]` | `true` |
### RecaptchaV3Result
Property | Type | Optional | Description
-------- | ---- | -------- | -----------
success | `boolean` | `false` | Whether this request was a valid reCAPTCHA token for your site
score | `number` | `false` | The score for this request (0.0 - 1.0)
action | `string` | `false` | The action name for this request
challengeTimestamp | `Date` | `false` | Timestamp of the challenge load
hostname | `string` | `false` | The hostname of the site where the reCAPTCHA was solved
errorCodes | `string[]` | `true` |