เริ่มต้นใช้งาน App Check กับผู้ให้บริการที่กำหนดเองบน Android

หน้านี้แสดงวิธีเปิดใช้ App Check ในแอป Android โดยใช้ ผู้ให้บริการ App Check ที่กำหนดเอง เมื่อเปิดใช้ App Check ช่วยให้มั่นใจได้ว่ามีเพียงแอปของคุณเท่านั้นที่เข้าถึงทรัพยากร Firebase ของโปรเจ็กต์ได้

หากต้องการใช้ App Check กับผู้ให้บริการ Play Integrity เริ่มต้น โปรดดูที่ เปิดใช้ App Check ด้วย Play Integrity ใน Android

ก่อนเริ่มต้น

1. เพิ่มไลบรารี App Check ลงในแอป

ในไฟล์ Gradle ของโมดูล (ระดับแอป) (ปกติ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) เพิ่มทรัพยากร Dependency สำหรับไลบรารี App Check สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันไลบรารี

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:33.2.0"))

    // 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")
}

เมื่อใช้Firebase Android BoM แอปจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ

(ทางเลือก) เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ใช้ BoM

หากเลือกไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชัน ในบรรทัดทรัพยากร Dependency

โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการในแอป เราขอแนะนำอย่างยิ่ง แนะนำให้ใช้ BoM ในการจัดการเวอร์ชันไลบรารี เพื่อให้มั่นใจว่าทุกเวอร์ชัน ที่เข้ากันได้

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:18.0.0")
}
หากกำลังมองหาโมดูลไลบรารีสำหรับ Kotlin โดยเฉพาะ จะเริ่มต้นใน ตุลาคม 2023 (Firebase BoM 32.5.0) ทั้งนักพัฒนา Kotlin และ Java สามารถ ขึ้นอยู่กับโมดูลไลบรารีหลัก (ดูรายละเอียดได้ที่ คําถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้)

2. ใช้อินเทอร์เฟซ App Check

ขั้นแรก คุณต้องสร้างชั้นเรียนที่ใช้ AppCheckProvider และ อินเทอร์เฟซ AppCheckProviderFactory รายการ

ชั้นเรียน AppCheckProvider ต้องมีเมธอด getToken() ซึ่งรวบรวม ข้อมูลใดก็ตามที่ผู้ให้บริการ App Check แบบกำหนดเองของคุณต้องการเพื่อเป็นหลักฐาน ความถูกต้อง แล้วส่งไปยังบริการรับโทเค็นเพื่อแลกกับ App Check โทเค็น App Check SDK จัดการการแคชโทเค็น ดังนั้นโปรด โทเค็นใหม่ในการใช้งาน getToken() ของคุณ

Kotlin+KTX

class YourCustomAppCheckToken(
    private val token: String,
    private val expiration: Long,
) : AppCheckToken() {
    override fun getToken(): String = token
    override fun getExpireTimeMillis(): Long = expiration
}

class YourCustomAppCheckProvider(firebaseApp: FirebaseApp) : AppCheckProvider {
    override fun getToken(): Task<AppCheckToken> {
        // Logic to exchange proof of authenticity for an App Check token and
        //   expiration time.
        // ...

        // Refresh the token early to handle clock skew.
        val expMillis = expirationFromServer * 1000L - 60000L

        // Create AppCheckToken object.
        val appCheckToken: AppCheckToken = YourCustomAppCheckToken(tokenFromServer, expMillis)
        return Tasks.forResult(appCheckToken)
    }
}

Java

public class YourCustomAppCheckToken extends AppCheckToken {
    private String token;
    private long expiration;

    YourCustomAppCheckToken(String token, long expiration) {
        this.token = token;
        this.expiration = expiration;
    }

    @NonNull
    @Override
    public String getToken() {
        return token;
    }

    @Override
    public long getExpireTimeMillis() {
        return expiration;
    }
}

public class YourCustomAppCheckProvider implements AppCheckProvider {
    public YourCustomAppCheckProvider(FirebaseApp firebaseApp) {
        // ...
    }

    @NonNull
    @Override
    public Task<AppCheckToken> getToken() {
        // Logic to exchange proof of authenticity for an App Check token and
        //   expiration time.
        // ...

        // Refresh the token early to handle clock skew.
        long expMillis = expirationFromServer * 1000L - 60000L;

        // Create AppCheckToken object.
        AppCheckToken appCheckToken =
                new YourCustomAppCheckToken(tokenFromServer, expMillis);

        return Tasks.forResult(appCheckToken);
    }
}

และใช้คลาส AppCheckProviderFactory ที่สร้างอินสแตนซ์ของ การใช้งาน AppCheckProvider:

Kotlin+KTX

class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
    override fun create(firebaseApp: FirebaseApp): AppCheckProvider {
        // Create and return an AppCheckProvider object.
        return YourCustomAppCheckProvider(firebaseApp)
    }
}

Java

public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
    @NonNull
    @Override
    public AppCheckProvider create(@NonNull FirebaseApp firebaseApp) {
        // Create and return an AppCheckProvider object.
        return new YourCustomAppCheckProvider(firebaseApp);
    }
}

3. เริ่มต้น App Check

เพิ่มโค้ดการเริ่มต้นต่อไปนี้ลงในแอปเพื่อให้แอปทำงานก่อนที่คุณจะใช้งาน Firebase SDK อื่นๆ

Kotlin+KTX

Firebase.initialize(context)
Firebase.appCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory(),
)

Java

FirebaseApp.initializeApp(/*context=*/ context);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        new YourCustomAppCheckProviderFactory());

ขั้นตอนถัดไป

เมื่อติดตั้งไลบรารี App Check ในแอปแล้ว ให้เริ่มเผยแพร่ ที่อัปเดตให้กับผู้ใช้

แอปไคลเอ็นต์ที่อัปเดตจะเริ่มส่งโทเค็น App Check พร้อมกับ ส่งคำขอไปยัง Firebase แต่ผลิตภัณฑ์ Firebase ไม่จำเป็นต้องใช้โทเค็น จะมีผลจนกว่าคุณจะเปิดใช้การบังคับใช้ในส่วนApp Checkของ คอนโซล Firebase

ตรวจสอบเมตริกและเปิดใช้การบังคับใช้

แต่ก่อนเปิดใช้การบังคับใช้ คุณควรตรวจสอบว่าการดำเนินการดังกล่าวจะไม่ กับผู้ใช้ที่ถูกต้องตามกฎหมายที่มีอยู่ ในทางกลับกัน ถ้าคุณเห็น การใช้ทรัพยากรแอปของคุณที่น่าสงสัย คุณอาจต้องเปิดใช้การบังคับใช้ เร็วขึ้น

เพื่อช่วยในการตัดสินใจ คุณสามารถดูเมตริก App Check สำหรับ บริการที่คุณใช้:

เปิดใช้การบังคับใช้ App Check

เมื่อเข้าใจแล้วว่า App Check จะส่งผลต่อผู้ใช้อย่างไรและพร้อม ดำเนินการต่อ คุณสามารถเปิดการบังคับใช้ App Check ได้โดยทำดังนี้

ใช้ App Check ในสภาพแวดล้อมการแก้ไขข้อบกพร่อง

หากหลังจากที่คุณลงทะเบียนแอปสำหรับ App Check แล้ว คุณต้องการเรียกใช้ แอปในสภาพแวดล้อมที่ตามปกติ App Check จะไม่จัดว่าเป็นแอปที่ถูกต้อง เช่น โปรแกรมจำลองระหว่างการพัฒนา หรือจากการรวมอย่างต่อเนื่อง (CI) คุณสามารถสร้างบิลด์การแก้ไขข้อบกพร่องของแอปที่ใช้ App Check แทนที่จะเป็นผู้ให้บริการเอกสารรับรองจริง

โปรดดูหัวข้อใช้ App Check กับผู้ให้บริการแก้ไขข้อบกพร่องใน Android