angular - 如何在 Angular 中使用 recaptcha v3?

标签 angular typescript recaptcha-v3

我知道有一些 ng 验证码库。我不想只调用一种方法来安装 npm 依赖项。在纯java脚本实现中,例如onSubmit方法调用,当我们提交表单时,我们从google recaptcha api调用此方法

 recaptcha.execute(secret_key, {action: 'homepage'}).then(function(token) {
       c.log('token', token);
})

但我找不到方法,我如何告诉 Angular 和 TypeScript 这个 recaptcha 变量来自 google api 并且它将执行 execute 方法。

现在我当然得到了错误

 recaptcha.execute is not a function

somoene 找到了一种无需库的方法吗?

最佳答案

所以这就是方法

app.component.ts


declare var grecaptcha: any;
const siteKey = 'YOUR_SITE_KEY';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
 
onSubmit() {
    grecaptcha.ready(() => {
      grecaptcha.execute(siteKey, { action: 'contactUs' }).then((token) => {
        console.log(token);
        let body = {
          firstName:this.firstName,
          captcha:token
        }
        this.recapService.checkRecaptcha(body).subscribe(res => {
          console.log('res', res);
        })
      });
    });
  }

}

服务

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class RecapService {

  constructor(private http: HttpClient) { }

  checkRecaptcha(body) {
    return this.http.post('http://localhost:3000/subscribe', body);
  }
}

关于angular - 如何在 Angular 中使用 recaptcha v3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65826766/

相关文章:

css - Recaptcha V3 Assets 导致 Pagespeed 问题 - 如何推迟

javascript - 需要 Angular 2+ 货币管道显示 2 位小数并接受各种用户输入

angular - 如何在 Angular 2 中使用路由器链接在元素内部建立链接

node.js - 无法在 Gulp 下运行项目

angular - 在 Angular 组件中配置 Revolution Slider

flask - Flask-WTF 是否支持 reCAPTCHA v3?

servlets - Google Recaptcha v3 示例演示

css - 从 Angular Typescript 导入 css3/compass

Angular 2 + Auth0(找不到模块 'auth0-js' 的声明文件。)

typescript - 如何获取从类实例克隆的对象的类型?