Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Chroń zasoby inne niż Firebase za pomocą funkcji App Check na Androida

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Za pomocą Sprawdzania aplikacji możesz chronić zasoby aplikacji inne niż Firebase, takie jak backendy z własnym hostingiem. Aby to zrobić, musisz wykonać obie następujące czynności:

Zanim zaczniesz

Dodaj Sprawdzanie aplikacji do swojej aplikacji, używając domyślnego dostawcy Play Integrity lub dostawcy niestandardowego .

Wysyłaj tokeny App Check z żądaniami zaplecza

Aby upewnić się, że żądania zaplecza zawierają prawidłowy, niewygasły token App Check, umieść każde żądanie w wywołaniu getAppCheckToken() . Biblioteka App Check odświeży token, jeśli to konieczne, i możesz uzyskać dostęp do tokenu w odbiorniku sukcesu metody.

Po uzyskaniu prawidłowego tokena wyślij go wraz z żądaniem do swojego zaplecza. To, jak to zrobisz, zależy od Ciebie, ale nie wysyłaj tokenów App Check jako części adresów URL , w tym w parametrach zapytania, ponieważ naraża to je na przypadkowe wycieki i przechwycenie. Zalecanym podejściem jest wysłanie tokena w niestandardowym nagłówku HTTP.

Na przykład, jeśli używasz Retrofit:

Java

public class ApiWithAppCheckExample {
    private interface YourExampleBackendService {
        @GET("yourExampleEndpoint")
        Call<List<String>> exampleData(
                @Header("X-Firebase-AppCheck") String appCheckToken);
    }

    YourExampleBackendService yourExampleBackendService = new Retrofit.Builder()
            .baseUrl("https://yourbackend.example.com/")
            .build()
            .create(YourExampleBackendService.class);

    public void callApiExample() {
        FirebaseAppCheck.getInstance()
                .getAppCheckToken(false)
                .addOnSuccessListener(new OnSuccessListener<AppCheckToken>() {
                    @Override
                    public void onSuccess(@NonNull AppCheckToken tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(appCheckToken);
                        // ...
                    }
                });
    }
}

Kotlin+KTX

class ApiWithAppCheckExample {
    interface YourExampleBackendService {
        @GET("yourExampleEndpoint")
        fun exampleData(
            @Header("X-Firebase-AppCheck") appCheckToken: String
        ): Call<List<String>>
    }

    var yourExampleBackendService: YourExampleBackendService = Retrofit.Builder()
        .baseUrl("https://yourbackend.example.com/")
        .build()
        .create(YourExampleBackendService::class.java)

    fun callApiExample() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}