Удивительно, даже когда оба продукта Google - есть нет информация, которую я могу найти о том, как интегрировать Recaptcha с Firebase. Возможно ли это? Если нет, что я могу использовать для проверки людей в приложении Firebase, у которого нет auth?
Использование recaptcha с Firebase
Ответ 1
Я только что опубликовал учебный блог о том, как интегрировать reCAPTCHA на веб-сайт, используя Firebase Hosting для обслуживания контента и облачных функций для Firebase для проверки ответа, полученного от reCAPTCHA. Сама функция выглядит так, предполагая, что токен ответа получен через строку запроса:
const functions = require('firebase-functions')
const rp = require('request-promise')
exports.checkRecaptcha = functions.https.onRequest((req, res) => {
const response = req.query.response
console.log("recaptcha response", response)
rp({
uri: 'https://recaptcha.google.com/recaptcha/api/siteverify',
method: 'POST',
formData: {
secret: 'PASTE_YOUR_SECRET_CODE_HERE',
response: response
},
json: true
}).then(result => {
console.log("recaptcha result", result)
if (result.success) {
res.send("You're good to go, human.")
}
else {
res.send("Recaptcha verification failed. Are you a robot?")
}
}).catch(reason => {
console.log("Recaptcha request failure", reason)
res.send("Recaptcha request failed.")
})
})
Ответ 2
Это довольно старый пост, но вот ответ для таких же искателей Google, как я. Теперь он встроен и супер легко настраивается:
window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha', {
'callback': (response) => {
// reCAPTCHA solved, allow signInWithPhoneNumber.
// ...
},
'expired-callback': () => {
// Response expired. Ask user to solve reCAPTCHA again.
// ...
}
})
window.recaptchaVerifier.render()
Как упоминает tuananh, убедитесь, что вы добавили <div id="recaptcha"></div>
.