我试图使用Rest和下面的文档来验证一个电话号码的用户。
https://cloud.google.com/identity-platform/docs/reference/rest/v1/TopLevel/getRecaptchaParams https://cloud.google.com/identity-platform/docs/reference/rest/v1/accounts/sendVerificationCode https://cloud.google.com/identity-platform/docs/reference/rest/v1/accounts/signInWithPhoneNumber
为了让您知道,在同一个项目标识平台下的云控制台中,启用了其他必需的API。
生成令牌的reCaptcha卷请求:
curl --location --request GET 'https://identitytoolkit.googleapis.com/v1/recaptchaParams?key=[API_KEY]' \
--header 'Content-Type: application/json'响应:
{
"kind": "identitytoolkit#GetRecaptchaParamResponse",
"recaptchaStoken": "zB06Pvo-22dUOWZiimFpRDUG5Dd9P5Be6IJIjz2xna9cmr-tnD1l-uhVvT5SYj6T5LsDFBUbkHetPv-fG5zF6VLxjl15LuGMuFr1170PhDo",
"recaptchaSiteKey": "6LcMZR0UAAAAALgPMcgHwga7gY5p8QMg1Hj-bmUv"
}卷请求将验证代码发送到给定的编号:
curl --location --request POST 'https://identitytoolkit.googleapis.com/v1/accounts:sendVerificationCode?key=[API_KEY]' \
--header 'Content-Type: text/plain' \
--data-raw '{
"phoneNumber": "+923446800107",
"recaptchaToken": "6LcMZR0UAAAAALgPMcgHwga7gY5p8QMg1Hj-bmUv"
}'响应:
{
"error": {
"code": 400,
"message": "CAPTCHA_CHECK_FAILED : Recaptcha verification failed - MALFORMED",
"errors": [
{
"message": "CAPTCHA_CHECK_FAILED : Recaptcha verification failed - MALFORMED",
"domain": "global",
"reason": "invalid"
}
]
}
}我根据文档在发送验证代码API请求中将来自reCaptcha请求响应的"recaptchaToken“字段作为”recaptchaToken“值,但我得到的错误是"CAPTCHA_CHECK_FAILED :recaptchaToken畸形格式”。
有人能帮我解决这个问题吗?或者让我知道我在哪里做错了?
正如我前面提到的,我已经在google云中启用了所有必需的API,比如身份平台、身份工具包。此外,在提供商列表中启用电话身份验证。
我正在使用从google云项目凭证获得的相同的API密钥。
发布于 2022-11-11 05:17:18
ReCaptcha要求您获取该站点密钥并将其插入到运行的网页中,以验证用户不是机器人。要将该站点键粘贴到您生成的recaptcha页面中的data属性中。ReCaptcha、SafteyNet和iOS认证提供者不允许您在没有用户提供某种认证确认的情况下代表用户提出请求。关于如何设置这个的这是一个很好的例子。它的不足会是这样的:
HTML页面
<html>
<head>
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<div id="example3"></div>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
async defer>
</body>
</html>JavaScipt Page
var verifyCallback = function(response) {
alert(response);
};
grecaptcha.render('example3', {
'sitekey' : 'your-site-key-from-recaptcha-json-response',
'callback' : verifyCallback,
'theme' : 'dark'
});因此,当用户按下reCaptcha进行认证时,他们会被确认为不是机器人,然后他们得到了一个密钥,可以提交给您的服务。请记住,您不能从任何站点或页面任意运行reCaptcha,它需要在认证选项卡授权域下的Firebase控制台中验证页面。
https://stackoverflow.com/questions/74389007
复制相似问题