几天前,我们升级到了 Recaptcha Enterprise。
似乎唯一的支持渠道是 stackoverflow
invalidReason 中的 BROWSER_ERROR 是什么意思?
在官方文档中
没有指定
{
"name": "projects/xxxxxxxxxxxxxxxxxxxxxxx",
"event": {
"token": "xxxxxxx",
"siteKey": "XXXXXXXXXXXXXXXXXXXXXX",
"userAgent": "Mozilla/5.0 (Linux; Android 10; Redmi Note 8T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.105 Mobile Safari/537.36",
"userIpAddress": "XXX.XXX.XXX.XXX",
"expectedAction": "login"
},
"score": 0,
"tokenProperties": {
"valid": false,
"invalidReason": "BROWSER_ERROR",
"hostname": "",
"action": ""
},
"reasons": []
}
Run Code Online (Sandbox Code Playgroud) https://developers.google.com/recaptcha/docs/verify#error_code_reference
我使用了 reCAPTCHA v3 并得到了官方文档中未列出的错误代码。
{
success : false,
error-codes : [ "browser-error" ]
}
Run Code Online (Sandbox Code Playgroud)
它只发生在 safari 浏览器中。
原因是什么?
我正在尝试将 reCAPTCHA 包含在我正在开发的 React 应用程序中,并使用 Next.js 作为服务器端功能。
我认为我从根本上对 reCAPTCHA Enterprise 感到困惑。
以前使用 reCAPTCHA 注册域的“免费”方式是为用户提供一个公共 reCAPTCHA 密钥和一个用于后端的私有 reCAPTCHA 密钥。这是通过使用 Google 的 reCAPTCHA v3 通过“管理员”在https://www.google.com/recaptcha/admin/create注册的。
鉴于我有 GCP 帐户,我会被重定向到 reCAPTCHA Enterprise API。这里只有一把钥匙可用。reCAPTCHA Enterprise 中是否没有可使用的密钥?
如果是这样,如何使用它?现在没有私钥了吗?
recaptcha google-cloud-platform recaptcha-v3 react-google-recaptcha recaptcha-enterprise
我使用 SafetyNet reCAPTCHA 已经有一段时间了。工作完美,但由于 SafetyNet 已弃用,我决定将集成迁移到 reCAPTCHA Enterprise。
SafetyNet reCAPTCHA 非常简单:
val recaptcha = SafetyNet.getClient(this).verifyWithRecaptcha(BuildConfig.RECAPTCHA_SITE)
recaptcha.addOnSuccessListener(this) { response ->
val token = response.tokenResult
// verify token with https://www.google.com/recaptcha/api/siteverify
}
Run Code Online (Sandbox Code Playgroud)
进行此 SafetyNet 调用时,我会收到一个验证码加载对话框,然后如果用户看起来像是机器人,则会出现带有图像的常见验证码。
现在,对于 reCAPTCHA Enterprise,我得到了完全不同的结果:
suspend fun validateUser(action: String) {
val recaptcha = Recaptcha.getClient(activity.application, BuildConfig.RECAPTCHA_SITE)
recaptcha.onSuccess { client ->
client.getUserToken(action)
}
}
private suspend fun RecaptchaClient.getUserToken(action: String) {
val execution = execute(RecaptchaAction.custom(action))
execution.onSuccess { token ->
// create assessment
}
}
Run Code Online (Sandbox Code Playgroud)
我可以获得客户端,并且可以获得令牌。现在,我需要创建一个评估来获取分数,但是当我调用execute (RecaptchaAction.custom(action))方法时,不应该出现验证码对话框或其他内容吗?reCAPTCHA Enterprise 只能作为隐形验证码使用吗?
我觉得我在文档中遗漏了一些东西,但我似乎真的无法理解这个新的 reCAPTCHA 在 Android …