Flutter谷歌验证码插件flutter_gcaptcha_v3的使用

发布于 1周前 作者 gougou168 来自 Flutter

Flutter谷歌验证码插件flutter_gcaptcha_v3的使用

介绍

flutter_gcaptcha_v3 是一个用于在Flutter应用中实现Google reCAPTCHA v3的简单插件。它通过验证用户是否为机器人来为你的Flutter应用增加一层安全性。

使用插件

准备工作

首先,你需要在项目的 pubspec.yaml 文件中添加该插件的依赖:

dependencies:
  flutter_gcaptcha_v3: any

注意:这个包可能在本地服务器上无法工作,因为 index.html 文件是本地添加的并且无法访问。请尝试将此 index.html 文件托管在你的域名下,并提供相应的URL作为参数。

Google reCAPTCHA V3 API Key

要注册一个URL到reCAPTCHA,按照以下步骤操作:

  1. 访问 reCAPTCHA管理控制台
  2. 使用Google账号登录。
  3. 添加标签名称(例如:app name)。
  4. 选择reCAPTCHA类型为 Challenge(V3)
  5. 点击“+ Add”按钮以注册网站。
  6. 测试时,可以添加域名 localhost;生产环境中可以添加实际的域名(如example.com)。
  7. 在Google Cloud Platform中添加应用名称并创建项目以启用所需的API。
  8. 点击保存并提交。

你将会获得两个密钥:

  • Site Key:用于在你的站点上显示验证码验证小部件。
  • Secret Key:用于应用程序与reCAPTCHA服务器之间的认证通信,以验证用户的响应。

服务器端验证

使用秘密密钥和从 flutter_gcaptcha_v3 包中获取的 token,可以通过调用Google API https://www.google.com/recaptcha/api/siteverify 来验证token。

你可以直接调用上述API或将其集成到后端服务器中。更多关于如何验证token的信息,请参阅Google文档

示例代码

以下是一个完整的示例demo:

import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_gcaptcha_v3/recaptca_config.dart';
import 'package:flutter_gcaptcha_v3/web_view.dart';

void main() {
  // 初始化数据站点密钥
  RecaptchaHandler.instance.setupSiteKey(dataSiteKey: 'YOUR_SITE_KEY_HERE');
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My Awesome App',
      theme: ThemeData(
        useMaterial3: true,
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.purple),
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.black,
        title: const Text(
          "flutter_gcaptcha_v3",
          style: TextStyle(color: Colors.white),
        ),
      ),
      backgroundColor: Colors.black,
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          SizedBox(
            height: 202,
            child: Stack(
              alignment: Alignment.centerRight,
              children: [
                IgnorePointer(
                  ignoring: true,
                  child: ReCaptchaWebView(
                    width: double.maxFinite,
                    height: 200,
                    onTokenReceived: _onTokenReceived,
                    url: 'YOUR_HOSTED_HTML_URL', // 替换为你托管的HTML文件URL
                  ),
                ),
              ],
            ),
          ),
          ElevatedButton(
            onPressed: () {
              RecaptchaHandler.executeV3(action: 'login');
            },
            child: const Text('submit'),
          ),
          const SizedBox(
            height: 20,
          ),
          ElevatedButton(
            onPressed: () {
              log('Stored Token ${RecaptchaHandler.instance.captchaToken}');
            },
            child: const Text('Stored Token'),
          )
        ],
      ),
    );
  }

  _onTokenReceived(String token) {
    log("CAPTCHA TOKEN==> $token");

    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
          content: Padding(
            padding: const EdgeInsets.all(10.0),
            child: Center(
              child: SelectableText(token),
            ),
          ),
          duration: const Duration(seconds: 10)),
    );
  }
}

请确保替换 'YOUR_SITE_KEY_HERE''YOUR_HOSTED_HTML_URL' 为你自己的值。希望这个示例能够帮助你在Flutter应用中成功集成Google reCAPTCHA v3!


更多关于Flutter谷歌验证码插件flutter_gcaptcha_v3的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter谷歌验证码插件flutter_gcaptcha_v3的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用Flutter插件flutter_gcaptcha_v3进行谷歌验证码(reCAPTCHA v3)集成的代码示例。请注意,实际使用时,你需要替换一些占位符值(如站点密钥和密钥)为你的实际值。

首先,确保你已经在pubspec.yaml文件中添加了flutter_gcaptcha_v3依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_gcaptcha_v3: ^最新版本号  # 替换为最新的版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中按照以下步骤使用flutter_gcaptcha_v3插件:

  1. 初始化插件

在你的主文件(通常是main.dart)或者你需要使用验证码的页面文件中,首先导入插件:

import 'package:flutter_gcaptcha_v3/flutter_gcaptcha_v3.dart';
  1. 配置和使用

以下是一个完整的示例,展示如何在Flutter应用中集成和使用谷歌验证码(reCAPTCHA v3):

import 'package:flutter/material.dart';
import 'package:flutter_gcaptcha_v3/flutter_gcaptcha_v3.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Google reCAPTCHA v3 Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String? captchaToken;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Google reCAPTCHA v3 Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Google reCAPTCHA v3 Token:',
            ),
            Text(
              captchaToken ?? 'Not Generated Yet',
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 替换为你的站点密钥
                final String siteKey = '你的站点密钥';
                
                // 调用获取验证码的方法
                final FlutterGCaptchaV3? captcha = FlutterGCaptchaV3();
                final String? token = await captcha?.getToken(siteKey: siteKey);
                
                // 更新状态
                setState(() {
                  captchaToken = token;
                });
                
                // 在这里你可以将token发送到你的服务器进行验证
                print('Captcha Token: $token');
              },
              child: Text('Generate Captcha Token'),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项:

  1. 站点密钥和密钥:确保你已经从Google reCAPTCHA管理控制台获取了站点密钥和密钥。在上面的代码中,siteKey是你从Google获取的站点密钥。

  2. 服务器验证:生成的验证码令牌需要发送到你的服务器进行验证。服务器会使用你的密钥与Google的API进行通信,以确认令牌的有效性。

  3. 错误处理:在实际应用中,你应该添加适当的错误处理逻辑,以处理例如网络错误或验证失败的情况。

  4. 隐私政策:确保你的应用遵循Google reCAPTCHA的使用条款和隐私政策。

这个示例展示了如何在Flutter应用中集成并使用flutter_gcaptcha_v3插件来生成谷歌验证码(reCAPTCHA v3)令牌。希望这对你有所帮助!

回到顶部