搜尋套件、儲存庫與 APP 分類

套件詳情v18.9.3

recaptcha_enterprise_flutter

一個用於 reCAPTCHA Enterprise 的 Flutter 插件。

AndroidiOS
近 30 天下載
15.6萬
喜歡數
55
Pub 分數
150

安裝套件

flutter pub add recaptcha_enterprise_flutter

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個將 Google reCAPTCHA Enterprise 結合至 Android 與 iOS 移動應用的 Flutter 插件。它透過先進的風險分析驗證使用者互動,協助開發者保護其應用程式免受機器人與自動化威脅。此插件簡化企業級 CAPTCHA 挑戰的實作,支援無縫驗證流程,同時不影響使用者體驗。它利用 Google Cloud 基礎設施,以最少設定提供強大的安全性。適合需要在敏感環境中進行高安全性驗證的應用。

適用情境

  • 保護登入表單免受機器人攻擊
  • 防止自動化請求攻擊API端點
  • 防止詐欺性註冊
  • 增強金融或醫療應用的安全性
  • 在關鍵操作期間驗證人類使用者

主要特色

  • 與 Google reCAPTCHA Enterprise 集成
  • 支援 Android 和 iOS 平台
  • 使用 Flutter 友好的 API 進行最小化設定
  • 提供風險分析和挑戰處理
  • 透過權杖驗證啟用伺服器端驗證

適合對象

  • 需要強大反機器人保護的移動應用
  • 企業級安全要求
  • 處理敏感用戶數據的應用程式
  • 使用 Google Cloud 服務的開發人員
  • 需要符合安全標準的專案

使用建議

  • 需要一個啟用了 reCAPTCHA Enterprise 的 Google Cloud 項目
  • 需要伺服器端權杖驗證以確保完全安全
  • 如果使用過度,可能會影響使用者體驗
  • 依賴網路連接以傳遞挑戰
  • 與網頁實現相比,自訂選項有限

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

reCAPTCHA Enterprise Flutter Module

Please note that issues filed in this repository are not an official Google support channel and are answered on a best effort basis. For official support, please visit: https://cloud.google.com/support-hub.

If you have an issue with the Flutter plugin please post issues in this repository. If you are having issues with the underlying SDK, please post issues in https://github.com/GoogleCloudPlatform/recaptcha-enterprise-mobile-sdk.

For general documentation on reCAPTCHA Enterprise for mobile applications, see Android and iOS.

Integrating reCAPTCHA Enterprise with your Flutter Application

This guide outlines the steps to integrate reCAPTCHA Enterprise into your Flutter application for enhanced security.

1. Environment Setup
  1. Add the reCAPTCHA Enterprise Flutter library:

    Execute the following command in your Flutter project's root directory:

    flutter pub add recaptcha_enterprise_flutter
    

    Note: This library supports only iOS and Android platforms.

2. Client Initialization
  1. Obtain Site Keys:

    Acquire your reCAPTCHA Enterprise site keys for both Android and iOS platforms from the Google Cloud Console.

  2. Instantiate the RecaptchaClient:

    Initialize the client using the appropriate site key based on the platform. It's crucial to initialize the client as early as possible within your application's lifecycle to minimize latency.

    import 'package:flutter/material.dart';
    import 'package:recaptcha_enterprise_flutter/recaptcha_enterprise_flutter.dart';
    import 'dart:io' show Platform;
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
    
      final siteKey = Platform.isAndroid
          ? "<ANDROID_SITE_KEY>"
          : "<IOS_SITE_KEY>";
    
      RecaptchaClient client = await Recaptcha.fetchClient(siteKey);
    
      runApp(MyApp(client: client));
    }
    
    class MyApp extends StatelessWidget {
      final RecaptchaClient client;
    
      const MyApp({super.key, required this.client});
    
      // ... other code ...
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: MyHomePage(title: 'reCAPTCHA Demo', client: client),
        );
      }
    }
    

    Important:

    • Replace <ANDROID_SITE_KEY> and <IOS_SITE_KEY> with your actual reCAPTCHA Enterprise site keys.
    • The example above demonstrates platform-specific site key selection. You can adopt alternative strategies, such as using asset files, to manage your site keys.
    • Initialization of the SDK can take several seconds to complete. To mitigate this latency, initialize the client as early as possible,
3. Executing reCAPTCHA Actions
  1. Invoke the execute method:

    For each action within your application that requires reCAPTCHA protection (e.g., login, registration), call the execute method of the RecaptchaClient, passing a RecaptchaAction instance.

    class MyHomePage extends StatefulWidget {
      const MyHomePage({super.key, required this.title, required this.client});
    
      final String title;
      final RecaptchaClient client;
    
      Future<bool> _login() async {
        try {
          String token = await client.execute(RecaptchaAction.LOGIN());
          // Send the token to your server for assessment.
          return await handleToken(token); // handleToken is a function that sends the token to your backend.
        } catch (err) {
          // Handle reCAPTCHA execution errors.
          print('reCAPTCHA execution error: $err');
          return false;
        }
      }
    
      // ... other code ...
    
      @override
      State<MyHomePage> createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                // ... other UI elements ...
                ElevatedButton(
                  onPressed: () async {
                    bool loginSuccess = await widget._login();
                    if(loginSuccess){
                      // handle successful login
                    } else {
                      // handle failed login
                    }
                  },
                  child: const Text('Login'),
                ),
              ],
            ),
          ),
        );
      }
    
    }
    Future<bool> handleToken(String token) async{
      // sends token to your backend.
      // this is a placeholder function, and needs to be implemented.
      return true;
    }
    
    • Replace handleToken(token) with your server-side logic for assessing the reCAPTCHA token.
4. Error Handling
  1. Implement Robust Error Handling:

    Your application must gracefully handle potential errors during reCAPTCHA service communication. Implement appropriate error handling mechanisms to manage scenarios where the API encounters issues.

  2. Refer to Official Documentation:

    Consult the official Google Cloud reCAPTCHA Enterprise documentation for detailed information on error codes and best practices:

Sample App

Copy example/assets/configs/dev.json.example to example/assets/configs/dev.json and add your sitekeys to the file.

Change ios bundle id in example/ios/Runner.xcodeproj/project.pbxproj from google.FlutterTestApp in three places to your own bundle id.

Change the Android bundle id in example/android/app/build.gradle from google.FlutterTestApp to your own.

Start an emulator, e.g. open -a Simulator or ~/Library/Android/sdk/emulator/emulator -avd Pixel_4_API_32

Run app:
cd example && flutter run
Run unit tests:
flutter test
Running Integration Tests
cd example && flutter test integration_test/app_test.dart

所屬分類

依賴

依賴清單 1 項

  • plugin_platform_interface^2.0.2

原始碼儲存庫

使用此套件的專案