首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google无法使用rest使用电话号码验证用户

Google无法使用rest使用电话号码验证用户
EN

Stack Overflow用户
提问于 2022-11-10 12:27:18
回答 1查看 66关注 0票数 2

我试图使用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卷请求:

代码语言:javascript
复制
curl --location --request GET 'https://identitytoolkit.googleapis.com/v1/recaptchaParams?key=[API_KEY]' \
--header 'Content-Type: application/json'

响应:

代码语言:javascript
复制
{
    "kind": "identitytoolkit#GetRecaptchaParamResponse",
    "recaptchaStoken": "zB06Pvo-22dUOWZiimFpRDUG5Dd9P5Be6IJIjz2xna9cmr-tnD1l-uhVvT5SYj6T5LsDFBUbkHetPv-fG5zF6VLxjl15LuGMuFr1170PhDo",
    "recaptchaSiteKey": "6LcMZR0UAAAAALgPMcgHwga7gY5p8QMg1Hj-bmUv"
}

卷请求将验证代码发送到给定的编号:

代码语言:javascript
复制
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"
}'

响应:

代码语言:javascript
复制
{
    "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密钥。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-11 05:17:18

ReCaptcha要求您获取该站点密钥并将其插入到运行的网页中,以验证用户不是机器人。要将该站点键粘贴到您生成的recaptcha页面中的data属性中。ReCaptcha、SafteyNet和iOS认证提供者不允许您在没有用户提供某种认证确认的情况下代表用户提出请求。关于如何设置这个的这是一个很好的例子。它的不足会是这样的:

HTML页面

代码语言:javascript
复制
<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

代码语言:javascript
复制
var verifyCallback = function(response) {
        alert(response);
      };

grecaptcha.render('example3', {
          'sitekey' : 'your-site-key-from-recaptcha-json-response',
          'callback' : verifyCallback,
          'theme' : 'dark'
        });

因此,当用户按下reCaptcha进行认证时,他们会被确认为不是机器人,然后他们得到了一个密钥,可以提交给您的服务。请记住,您不能从任何站点或页面任意运行reCaptcha,它需要在认证选项卡授权域下的Firebase控制台中验证页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74389007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档