与使用验证码火力地堡
令人惊讶的,更当两者都是谷歌的产品,有没有信息,我可以找到如何使用的Recaptcha集成火力地堡。它甚至有可能吗?如果没有,我可以使用什么来验证没有身份验证的Firebase应用上的人员?与使用验证码火力地堡
我刚刚发布了一个tutorial blog关于如何将reCAPTCHA集成到网站中,该网站使用Firebase托管来为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.")
})
})
是否有任何替代品使用请求承诺。 'const rp = require('request-promise')'? –
如果我想在用户使用Facebook或Google的OAuth之前使用此功能,那该怎么办? –
只要您遵循reCAPTCHA API的规范,您就可以使用任何您喜欢的HTTP客户端库。你可以随时做到这一点。 –
这是一个很老的文章,但这里的同胞谷歌搜索和我一样的答案。它现在的内置,以及超级简单设置:
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>
。
我目前也在研究这个。当我有东西的时候会回复一个答案或者更新。 –
我还没有开始对我的解决方案还没有,不过,我希望使用云功能的火力地堡到https://firebase.google.com/docs/functions/与整合的Recaptcha。这里也有类似的用例:https://github.com/firebase/functions-samples –
我不知道我是否太迟。现在有Firebase的云端功能。你可以在JavaScript上编写你自己的后端API。您不必直接从客户端调用Firebase数据库,而是通过客户端上的Firebase云端功能调用您的自定义API,并在那里验证reCaptcha并以管理员身份(firebase-admin)对数据库执行某些操作。我试过了,它工作正常。 – pupuupup