Flutter谷歌验证码插件flutter_gcaptcha_v3的使用
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,按照以下步骤操作:
- 访问 reCAPTCHA管理控制台。
- 使用Google账号登录。
- 添加标签名称(例如:app name)。
- 选择reCAPTCHA类型为
Challenge(V3)
。 - 点击“+ Add”按钮以注册网站。
- 测试时,可以添加域名
localhost
;生产环境中可以添加实际的域名(如example.com)。 - 在Google Cloud Platform中添加应用名称并创建项目以启用所需的API。
- 点击保存并提交。
你将会获得两个密钥:
- 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
更多关于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
插件:
- 初始化插件:
在你的主文件(通常是main.dart
)或者你需要使用验证码的页面文件中,首先导入插件:
import 'package:flutter_gcaptcha_v3/flutter_gcaptcha_v3.dart';
- 配置和使用:
以下是一个完整的示例,展示如何在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'),
),
],
),
),
);
}
}
注意事项:
-
站点密钥和密钥:确保你已经从Google reCAPTCHA管理控制台获取了站点密钥和密钥。在上面的代码中,
siteKey
是你从Google获取的站点密钥。 -
服务器验证:生成的验证码令牌需要发送到你的服务器进行验证。服务器会使用你的密钥与Google的API进行通信,以确认令牌的有效性。
-
错误处理:在实际应用中,你应该添加适当的错误处理逻辑,以处理例如网络错误或验证失败的情况。
-
隐私政策:确保你的应用遵循Google reCAPTCHA的使用条款和隐私政策。
这个示例展示了如何在Flutter应用中集成并使用flutter_gcaptcha_v3
插件来生成谷歌验证码(reCAPTCHA v3)令牌。希望这对你有所帮助!