Simple Google ReCAPTCHA microservice for Zeit Now. (does not yet work with the new ReCAPTCHA v3.)
Can also be imported and used a node module.
Define an /api/captcha
lambda in now.json
with the following:
import microCaptcha from 'micro-captcha'
export default microCaptcha({ secret: process.env.RECAPTCHA_SECRET_KEY })
Make sure to also set RECAPTCHA_SECREY_KEY
to be available at runtime.
Now on the client side you'll want to pick your favorite ReCAPTCHA component (or roll your own) and use a handler like so:
onVerify () {
fetch(`/api/captcha?response=${captchaResponse}`)
.then(r => {
if (r.ok) return r.json()
throw new Error('failed to verify humanity')
})
.then(({ verified }) => {
if (verified) {
... // Notify user of success!
}
})
}
Of course, you likely want to actually perform some action server-side, in which case it's best to use your /api/captcha
endpoint indirectly. For an example see: micro-captcha-example
Use as a node module
Can also be used as a node module which can be useful for local development.
To install:
yarn add micro-captcha
or
npm install --save micro-captcha
The default export takes a config option (where secret
is the only required key) and runs the microservice. Usage will look something like this:
const microCaptcha = require('micro-captcha')
microCaptcha({ secret: process.env.CAPTCHA_SECRET, port: process.env.PORT, log = true })
- Nathaniel Hill (@NathanielHill)