Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Android에서 디버그 공급자와 함께 앱 확인 사용

App Check에 앱을 등록한 후 개발 중 에뮬레이터와 같이 App Check가 일반적으로 유효한 것으로 분류하지 않는 환경에서 또는 지속적 통합(CI) 환경에서 앱을 실행하려는 경우 다음을 수행할 수 있습니다. 실제 증명 공급자 대신 App Check 디버그 공급자를 사용하는 앱의 디버그 빌드를 만듭니다.

에뮬레이터에서 디버그 공급자 사용

에뮬레이터에서 대화식으로 앱을 실행하는 동안(예: 개발 중) 디버그 공급자를 사용하려면 다음을 수행합니다.

  1. 모듈 (응용 프로그램 수준) Gradle을 파일 (일반적으로 app/build.gradle 앱은 안드로이드 라이브러리를 확인 용), 종속성을 선언 :

    자바

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta03'
    }
    

    코틀린+KTX

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta03'
    }
    
  2. 디버그 빌드에서 디버그 공급자 팩토리를 사용하도록 App Check를 구성합니다.

    자바

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());

    코틀린+KTX

    FirebaseApp.initializeApp(/*context=*/this)
    val firebaseAppCheck = FirebaseAppCheck.getInstance()
    firebaseAppCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance()
    )
  3. 앱을 실행하고 Firebase 백엔드 서비스에 대한 호출을 트리거합니다. SDK가 백엔드에 요청을 보내려고 할 때 로컬 디버그 토큰이 기록됩니다. 예를 들어:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. 에서 프로젝트 설정> 앱 확인 중포 기지 콘솔의 섹션, 앱의 오버 플로우 메뉴에서 디버그 토큰 관리를 선택합니다. 그런 다음 이전 단계에서 로그인한 디버그 토큰을 등록합니다.

    디버그 토큰 관리 메뉴 항목의 스크린샷

토큰을 등록하면 Firebase 백엔드 서비스에서 토큰을 유효한 것으로 수락합니다.

이 토큰을 사용하면 유효한 기기 없이 Firebase 리소스에 액세스할 수 있으므로 비공개로 유지하는 것이 중요합니다. 공개 저장소에 커밋하지 말고 등록된 토큰이 손상된 경우 Firebase 콘솔에서 즉시 취소하세요.

CI 환경에서 단위 테스트를 위해 디버그 공급자 사용

CI(지속적 통합) 환경에서 단위 테스트에 디버그 공급자를 사용하려면 다음을 수행합니다.

  1. 에서 프로젝트 설정> 앱 확인 중포 기지 콘솔의 섹션, 앱의 오버 플로우 메뉴에서 디버그 토큰 관리를 선택합니다. 그런 다음 새 디버그 토큰을 만듭니다. 다음 단계에서 토큰이 필요합니다.

    이 토큰을 사용하면 유효한 기기 없이 Firebase 리소스에 액세스할 수 있으므로 비공개로 유지하는 것이 중요합니다. 공개 저장소에 커밋하지 말고 등록된 토큰이 손상된 경우 Firebase 콘솔에서 즉시 취소하세요.

    디버그 토큰 관리 메뉴 항목의 스크린샷

  2. 당신이 당신의 CI 시스템의 보안 키 저장소에 생성 된 토큰 디버그를 추가 (예를 들어, GitHub의 작업 ' 암호화 된 비밀 또는 트래비스 CI의 암호화 변수 ).

  3. 필요한 경우 디버그 토큰을 CI 환경 내에서 환경 변수로 사용할 수 있도록 CI 시스템을 구성합니다. 같은 변수 뭔가 이름을 APP_CHECK_DEBUG_TOKEN_FROM_CI .

  4. 모듈 (응용 프로그램 수준) Gradle을 파일 (일반적으로 app/build.gradle ) :

    1. App Check Android 디버그 라이브러리에 대한 테스트 종속성을 선언합니다.

      자바

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.0-beta03'
      }
      

      코틀린+KTX

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.0-beta03'
      }
      
    2. CI 빌드 변형의 구성에 다음을 추가합니다.

      testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
      
  5. 테스트 클래스에서 사용 DebugAppCheckTestHelper 앱 토큰 확인 필요 코드를 포장 :

    자바

    @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.
                    });
        }
    }
    

    코틀린+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.
            }
        }
    }
    

앱이 CI 환경에서 실행될 때 Firebase 백엔드 서비스는 전송하는 토큰을 유효한 것으로 수락합니다.