Sử dụng tính năng Kiểm tra ứng dụng bằng trình cung cấp gỡ lỗi trên Android

Sau khi App Check được thực thi cho một dịch vụ phụ trợ, các tính năng của ứng dụng phụ thuộc vào dịch vụ phụ trợ đó sẽ không chạy trong trình mô phỏng hoặc trong môi trường tích hợp liên tục (CI) vì các môi trường này không đủ điều kiện để được coi là thiết bị hợp lệ. Để chạy ứng dụng trong các môi trường này trong quá trình phát triển và kiểm thử, bạn cần tạo một bản gỡ lỗi của ứng dụng sử dụng App Check nhà cung cấp dịch vụ gỡ lỗi thay vì nhà cung cấp dịch vụ chứng thực chính thức.

Sử dụng nhà cung cấp dịch vụ gỡ lỗi trong trình mô phỏng

Sau đây là cách sử dụng nhà cung cấp dịch vụ gỡ lỗi trong khi chạy ứng dụng trong trình mô phỏng theo cách tương tác (ví dụ: trong quá trình phát triển cục bộ):

  1. Trong tệp Gradle (ở cấp ứng dụng) trong mô-đun (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy thêm phần phụ thuộc cho thư viện App Check dành cho Android. Bạn nên sử dụng Firebase Android BoM để kiểm soát việc tạo phiên bản thư viện.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependencies for the App Check libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    Bằng cách sử dụng Firebase Android BoM, ứng dụng của bạn sẽ luôn sử dụng những phiên bản tương thích của thư viện Android trên Firebase.

    (Cách khác)  Thêm phần phụ thuộc thư viện Firebase mà không sử dụng BoM

    Nếu chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phần phụ thuộc của phiên bản đó.

    Xin lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng, bạn nên sử dụng BoM để quản lý các phiên bản thư viện, nhằm đảm bảo rằng tất cả phiên bản đều tương thích.

    dependencies {
        // Add the dependencies for the App Check libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

  2. Trong bản gỡ lỗi, hãy định cấu hình App Check để sử dụng nhà máy của nhà cung cấp dịch vụ gỡ lỗi:

    Kotlin

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Lấy mã thông báo gỡ lỗi:

    1. Chạy ứng dụng trong trình mô phỏng hoặc trên thiết bị thử nghiệm.

    2. Tìm mã thông báo gỡ lỗi App Check trong nhật ký. Ví dụ:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Sao chép mã thông báo (ví dụ: 123a4567-b89c-12d3-e456-789012345678).

  4. Đăng ký mã thông báo gỡ lỗi của bạn với App Check:

    1. Trong bảng điều khiển Firebase, hãy chuyển đến phần Security (Bảo mật) > App Check (Kiểm tra ứng dụng) > thẻ Apps (Ứng dụng).

    2. Tìm ứng dụng của bạn, nhấp vào trình đơn mục bổ sung có biểu tượng ba dấu chấm (), rồi chọn Quản lý mã thông báo gỡ lỗi.

    3. Làm theo hướng dẫn trên màn hình để đăng ký mã thông báo gỡ lỗi.

    Ảnh chụp màn hình mục Quản lý mã gỡ lỗi trong bảng điều khiển của Firebase

Sau khi bạn đăng ký mã thông báo bằng App Check, các dịch vụ phụ trợ của bạn sẽ chấp nhận mã thông báo đó là hợp lệ.

Mã thông báo này cho phép truy cập vào các dịch vụ phụ trợ của bạn mà không cần thiết bị hợp lệ, vì vậy, bạn cần phải giữ bí mật mã thông báo này. Đừng đưa mã thông báo này vào kho lưu trữ công khai hoặc đưa vào bản dựng chính thức của ứng dụng. Nếu mã thông báo đã đăng ký bị xâm phạm, hãy xoá mã thông báo đó ngay lập tức bằng cách sử dụng mục Quản lý mã thông báo gỡ lỗi trong bảng điều khiển Firebase.

Sử dụng nhà cung cấp dịch vụ gỡ lỗi để kiểm thử đơn vị trong môi trường CI

Sau đây là cách sử dụng nhà cung cấp dịch vụ gỡ lỗi để kiểm thử đơn vị trong môi trường tích hợp liên tục (CI):

  1. Trong bảng điều khiển Firebase, hãy tạo mã thông báo gỡ lỗi:

    1. Trong bảng điều khiển Firebase, hãy chuyển đến phần Security (Bảo mật) > App Check (Kiểm tra ứng dụng) > thẻ Apps (Ứng dụng).

    2. Tìm ứng dụng của bạn, nhấp vào trình đơn mục bổ sung có biểu tượng ba dấu chấm (), rồi chọn Quản lý mã thông báo gỡ lỗi.

    3. Làm theo hướng dẫn trên màn hình để tạo mã thông báo gỡ lỗi mới.

    Mã thông báo này cho phép truy cập vào các dịch vụ phụ trợ của bạn mà không cần thiết bị hợp lệ, vì vậy, bạn cần phải giữ bí mật mã thông báo này. Đừng đưa mã thông báo này vào kho lưu trữ công khai hoặc đưa vào bản dựng chính thức của ứng dụng. Nếu mã thông báo đã đăng ký bị xâm phạm, hãy xoá mã thông báo đó ngay lập tức bằng cách sử dụng mục Quản lý mã thông báo gỡ lỗi trong bảng điều khiển Firebase.

    Ảnh chụp màn hình mục trong trình đơn Manage Debug Tokens (Quản lý mã gỡ lỗi)

  2. Thêm mã gỡ lỗi bạn vừa tạo vào kho khoá bảo mật của hệ thống CI (ví dụ: bí mật đã mã hoá của GitHub Actions hoặc biến đã mã hoá của Travis CI).

  3. Nếu cần, hãy định cấu hình hệ thống CI để cung cấp mã gỡ lỗi trong môi trường CI dưới dạng biến môi trường. Đặt tên cho biến, chẳng hạn như APP_CHECK_DEBUG_TOKEN_FROM_CI.

  4. Trong tệp Gradle (ở cấp ứng dụng) trong mô-đun (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy thêm phần phụ thuộc cho thư viện App Check dành cho Android. Bạn nên sử dụng Firebase Android BoM để kiểm soát việc tạo phiên bản thư viện.

    Kotlin

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    Bằng cách sử dụng Firebase Android BoM, ứng dụng của bạn sẽ luôn sử dụng những phiên bản tương thích của thư viện Android trên Firebase.

    (Cách khác)  Thêm phần phụ thuộc thư viện Firebase mà không sử dụng BoM

    Nếu chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phần phụ thuộc của phiên bản đó.

    Xin lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng, bạn nên sử dụng BoM để quản lý các phiên bản thư viện, nhằm đảm bảo rằng tất cả phiên bản đều tương thích.

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    Bằng cách sử dụng Firebase Android BoM, ứng dụng của bạn sẽ luôn sử dụng những phiên bản tương thích của thư viện Android trên Firebase.

    (Cách khác)  Thêm phần phụ thuộc thư viện Firebase mà không sử dụng BoM

    Nếu chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phần phụ thuộc của phiên bản đó.

    Xin lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng, bạn nên sử dụng BoM để quản lý các phiên bản thư viện, nhằm đảm bảo rằng tất cả phiên bản đều tương thích.

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

  5. Thêm đoạn mã sau vào cấu hình của biến thể bản dựng CI:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. Trong các lớp kiểm thử, hãy sử dụng DebugAppCheckTestHelper để gói mọi mã cần có mã thông báo App Check:

    Kotlin

    @RunWith(AndroidJunit4::class)
    class MyTests {
        private val debugAppCheckTestHelper =
            DebugAppCheckTestHelper.fromInstrumentationArgs()
    
        @Test
        fun testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider {
                // Test code that requires a debug AppCheckToken.
            }
        }
    
        @Test
        fun testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                FirebaseApp.getInstance("nonDefaultApp")
            ) {
                // Test code that requires a debug AppCheckToken.
            }
        }
    }
    

    Java

    @RunWith(AndroidJunit4.class)
    public class YourTests {
        private final DebugAppCheckTestHelper debugAppCheckTestHelper =
                DebugAppCheckTestHelper.fromInstrumentationArgs();
    
        @Test
        public void testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(() -> {
                // Test code that requires a debug AppCheckToken.
            });
        }
    
        @Test
        public void testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                    FirebaseApp.getInstance("nonDefaultApp"),
                    () -> {
                        // Test code that requires a debug AppCheckToken.
                    });
        }
    }
    

Khi ứng dụng của bạn chạy trong môi trường CI, các dịch vụ phụ trợ sẽ chấp nhận mã thông báo mà ứng dụng gửi dưới dạng hợp lệ.