App Check에 앱을 등록한 후 App Check가 일반적으로 유효한 것으로 분류하지 않는 환경의 앱 (예: 개발 중 에뮬레이터, 지속적 통합(CI)) gcloud 명령어를 사용하여 앱의 디버그 빌드를 실제 증명 제공자가 아닌 App Check 디버그 제공자입니다.
에뮬레이터에서 디버그 제공자 사용
에뮬레이터에서 대화형으로 앱을 실행하는 동안(예: 개발 중에) 디버그 제공자를 사용하려면 다음 안내를 따르세요.
모듈 (앱 수준) Gradle 파일에서 (일반적으로
<project>/<app-module>/build.gradle.kts
또는<project>/<app-module>/build.gradle
), Android용 App Check 라이브러리의 종속 항목을 추가합니다. 이때 Firebase Android BoM 드림 라이브러리 버전 관리를 제어할 수 있습니다.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.2.0")) // 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") }
Firebase Android BoM를 사용하면 앱은 항상 호환되는 Firebase Android 라이브러리 버전만 사용합니다.
(대안) BoM를 사용하지 않고 Firebase 라이브러리 종속 항목을 추가합니다.
Firebase BoM를 사용하지 않도록 선택하는 경우 각 Firebase 라이브러리 버전을 지정해야 합니다. 를 사용해야 합니다.
앱에서 여러 Firebase 라이브러리를 사용하는 경우 BoM를 사용하여 라이브러리 버전을 관리하는 것이 좋습니다. 이렇게 하면 모든 버전이 지원합니다.
드림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:18.0.0") }
디버그 빌드에서 디버그 제공자를 사용하도록 App Check 구성 팩토리:
Kotlin+KTX
Firebase.initialize(context = this) Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), )
Java
FirebaseApp.initializeApp(/*context=*/ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance());
앱을 실행하고 Firebase 백엔드 서비스 호출을 트리거합니다. SDK가 백엔드로 요청을 보내려고 하면 로컬 디버그 토큰이 로깅됩니다. 예를 들면 다음과 같습니다.
D DebugAppCheckProvider: Enter this debug secret into the allow list in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
App Check 섹션에서 Firebase 콘솔의 앱 메뉴에서 디버그 토큰 관리를 선택합니다. 더보기 메뉴 그런 다음 이전 단계에서 로깅한 디버그 토큰을 등록합니다.
토큰을 등록하면 Firebase 백엔드 서비스에서 토큰을 유효한 것으로 간주합니다.
이 토큰은 유효한 기기 없이도 Firebase 리소스에 액세스를 허용하므로 비공개로 유지하는 것이 중요합니다. GCP에 커밋하지 마세요 등록된 토큰이 손상된 경우 Firebase 콘솔에서 즉시 확인할 수 있습니다.
CI 환경에서 단위 테스트에 디버그 제공자 사용
지속적 통합(CI) 환경에서 단위 테스트에 디버그 제공자를 사용하려면 다음 단계를 따르세요.
App Check 섹션에서 Firebase 콘솔의 앱 메뉴에서 디버그 토큰 관리를 선택합니다. 더보기 메뉴 그런 다음 새 디버그 토큰을 만듭니다. 다음 단계에서 토큰이 필요합니다.
이 토큰은 유효한 기기 없이도 Firebase 리소스에 액세스를 허용하므로 비공개로 유지하는 것이 중요합니다. GCP에 커밋하지 마세요 등록된 토큰이 손상된 경우 Firebase 콘솔에서 즉시 확인할 수 있습니다.
방금 만든 디버그 토큰을 CI 시스템의 보안 키 저장소에 추가합니다(예: GitHub 작업의 암호화된 보안 비밀 또는 Travis CI의 암호화된 변수).
필요한 경우 CI 환경 내에서 디버그 토큰을 환경 변수로 사용하도록 CI 시스템을 구성합니다. 변수의 이름을
APP_CHECK_DEBUG_TOKEN_FROM_CI
와 같이 지정합니다.모듈 (앱 수준) Gradle 파일에서 (일반적으로
<project>/<app-module>/build.gradle.kts
또는<project>/<app-module>/build.gradle
), Android용 App Check 라이브러리의 종속 항목을 추가합니다. 이때 Firebase Android BoM 드림 라이브러리 버전 관리를 제어할 수 있습니다.Kotlin+KTX
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-debug") }
Firebase Android BoM를 사용하면 앱은 항상 호환되는 Firebase Android 라이브러리 버전만 사용합니다.
(대안) BoM를 사용하지 않고 Firebase 라이브러리 종속 항목을 추가합니다.
Firebase BoM를 사용하지 않도록 선택하는 경우 각 Firebase 라이브러리 버전을 지정해야 합니다. 를 사용해야 합니다.
앱에서 여러 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-debug:18.0.0") }
Java
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-debug") }
Firebase Android BoM를 사용하면 앱은 항상 호환되는 Firebase Android 라이브러리 버전만 사용합니다.
(대안) BoM를 사용하지 않고 Firebase 라이브러리 종속 항목을 추가합니다.
Firebase BoM를 사용하지 않도록 선택하는 경우 각 Firebase 라이브러리 버전을 지정해야 합니다. 를 사용해야 합니다.
앱에서 여러 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-debug:18.0.0") }
CI 빌드 변형의 구성에 다음을 추가합니다.
testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] = System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
테스트 클래스에서
DebugAppCheckTestHelper
를 사용하여 코드를 래핑합니다. App Check 토큰이 필요한 경우:Kotlin+KTX
@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. }); } }
앱이 CI 환경에서 실행되면 Firebase 백엔드 서비스는 전송된 토큰을 유효한 것으로 수락합니다.