令人惊讶的是,尽管两者均为Google产品,但我无法找到有关如何将Recaptcha与Firebase集成的任何信息。 这是否可能? 如果不行,那么我在Firebase应用程序中没有验证权限时可以使用什么来验证用户?
令人惊讶的是,尽管两者均为Google产品,但我无法找到有关如何将Recaptcha与Firebase集成的任何信息。 这是否可能? 如果不行,那么我在Firebase应用程序中没有验证权限时可以使用什么来验证用户?
这篇文章已经比较老了,但是以下的答案可以帮助像我一样通过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>
。
我刚刚发布了一篇关于如何在网站中使用Firebase Hosting来提供内容,以及使用Firebase Cloud Functions来验证从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.")
})
})
const rp = require('request-promise')
? - Gal Bracha