Android 앱에 Firebase 전화번호 인증 추가

1. 개요

Firebase 전화번호 인증 (Firebase PNV 또는 FPNV)은 전화번호를 인증하는 더 빠르고 안전한 방법입니다. 최종 사용자가 문자 메시지에서 코드를 수신하고 입력해야 하는 SMS 기반 인증과 달리 Firebase PNV는 한 번의 탭으로 연결된 이동통신사에서 기기의 SIM에 할당된 전화번호를 직접 가져와 작동합니다. 이렇게 하면 최종 사용자의 불편이 줄어들고, SMS 메시지 전송에 의존하지 않아 안정성이 향상되며, SMS 사용 시 흔히 악용되는 악용 벡터가 제거됩니다.

Firebase PNV 팝업 대화상자

이 Codelab에서는 Firebase 전화번호 인증을 사용하여 테이블 예약을 확인하기 전에 최종 사용자의 전화번호를 인증하는 '레스토랑 찾기' AI 음성 에이전트를 빌드하는 방법을 알아봅니다.

기본 요건

  • 최신 버전의 Android 스튜디오
  • API 수준 26 이상을 실행하는 Android 기기 또는 에뮬레이터

학습할 내용

  • Firebase PNV로 Firebase 프로젝트를 설정합니다.
  • 결제 계정 또는 실제 SIM 없이 프로토타입을 제작하려면 테스트 모드 에서 Firebase PNV를 사용합니다.
  • Firebase PNV SDK를 Android 앱에 통합합니다.
  • 단일 호출 API를 사용하여 전화번호를 인증합니다.
  • (선택사항) 프로덕션용 앱을 준비합니다.

2. 샘플 프로젝트 설정

Firebase 프로젝트 만들기

  1. Google 계정을 사용하여 Firebase Console에 로그인합니다.
  2. 버튼을 클릭하여 새 프로젝트를 만든 다음 프로젝트 이름 (예: Tera Bites)을 입력합니다.
  3. 계속 을 클릭합니다.
  4. 메시지가 표시되면 Firebase 약관을 검토하고 이에 동의한 다음 계속을 클릭합니다.
  5. (선택사항) Firebase Console에서 AI 지원('Firebase의 Gemini'라고 함)을 사용 설정합니다.
  6. 이 Codelab에서는 Google 애널리틱스가 필요하지 않으므로 Google 애널리틱스 옵션을 사용 중지 합니다.
  7. 프로젝트 만들기 를 클릭하고 프로젝트가 프로비저닝될 때까지 기다린 다음 계속 을 클릭합니다.

코드 다운로드

다음 명령어를 실행하여 이 Codelab의 샘플 코드를 클론합니다.

git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd codelabs/firebase-pnv-android

Android 스튜디오에서 firebase-pnv-android 디렉터리를 엽니다.

Android 프로젝트를 Firebase에 연결

  1. Firebase Console의 프로젝트 개요 페이지 중앙에 있는 Android 아이콘 또는 앱 추가 를 클릭하여 앱 만들기 워크플로를 시작합니다.
  2. Android 패키지 이름 필드에 앱의 패키지 이름(com.google.firebase.example.fpnv)을 입력합니다.
  3. 앱 등록 을 클릭합니다.
  4. 안내에 따라 google-services.json 파일을 다운로드하고 방금 다운로드한 코드의 app/ 디렉터리로 이동합니다.
  5. 다음 을 클릭합니다.

Firebase AI Logic 사용 설정

이 Codelab에서는 Firebase AI Logic을 사용하여 AI 음성 에이전트를 지원합니다. Firebase 프로젝트에서 Firebase AI Logic을 사용 설정하려면 다음 단계를 따르세요.

  1. Firebase Console에서 AI 서비스 > AI Logic으로 이동합니다.
  2. 시작하기 를 클릭합니다.
  3. 이 API 시작하기 를 클릭하여 Gemini Developer API 를 사용하도록 선택합니다.
  4. API 사용 설정 을 클릭하고 확인합니다.

3. 테스트 모드에서 Firebase PNV 설정

테스트 모드를 사용하면 개발을 위해 테스트 토큰을 사용하여 '가짜' 전화번호를 인증할 수 있습니다.

Google 시스템 서비스 공개 베타 프로그램 참여

테스트 모드를 사용하려면 개발 기기를 Google 시스템 서비스 베타 채널에 등록하세요.

  1. Android 앱 테스트 - Google 시스템 서비스 페이지로 이동합니다.
  2. 테스트 참여하기 를 클릭합니다.

이제 Google 시스템 서비스의 베타 테스터가 되었습니다.

Firebase PNV 종속 항목 추가

Android 프로젝트의 코드베이스에서 Firebase PNV 및 Firebase AI Logic 라이브러리의 종속 항목은 /gradle/versions.toml 파일에 이미 정의되어 있습니다.

[versions]
# ... other dependencies
firebaseBom = "34.12.0"

[libraries]
# ... other libraries
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" }
firebase-ai-logic = { module = "com.google.firebase:firebase-ai" }
firebase-pnv = { module = "com.google.firebase:firebase-pnv" }

모듈 (앱 수준) Gradle 파일 (일반적으로 /app/build.gradle.kts)에서 Firebase PNV 라이브러리의 종속 항목을 선언합니다.

dependencies {
  // ... other dependencies
  implementation(platform(libs.firebase.bom))
  implementation(libs.firebase.ai.logic)

  // Add this line
  implementation(libs.firebase.pnv)

  // ...
}

테스트 토큰 생성

  1. Firebase Console에서 보안 > 전화번호 인증으로 이동합니다.
  2. 테스트 탭을 선택합니다.
  3. 테스트용 전화번호의 국가 코드를 선택하고 토큰 생성 을 클릭합니다.
  4. 생성된 토큰 문자열을 복사합니다.

코드에서 테스트 세션 사용 설정

  1. Android 프로젝트로 돌아가 ChatViewModel.kt 파일을 열고 verifyPhoneNumber() 함수를 찾습니다.
  2. FirebasePhoneNumberVerification 클라이언트를 초기화하고 테스트 세션을 사용 설정하여 Firebase Console에서 복사한 토큰을 붙여넣습니다.
    suspend fun verifyPhoneNumber(): String {
        // Initialize Firebase Phone Number Verification
        val fpnv = FirebasePhoneNumberVerification.getInstance(context!!)
    
        // Enable Test session
        fpnv.enableTestSession("PASTE_THE_TOKEN_YOU_COPIED_IN_PREV_STEP")
    
        // Trigger the Firebase PNV pop up
        val response = fpnv.getVerifiedPhoneNumber().await()
        val phoneNumber = response.getPhoneNumber()
    
        return phoneNumber
    }
    

4. 앱 실행

이제 Firebase PNV를 구현했으므로 앱을 실행할 차례입니다.

  1. Android 스튜디오에서 실행 을 클릭하여 Android 에뮬레이터 또는 실제 기기에서 앱을 실행합니다.
  2. 앱이 실행되면 다음과 같은 화면이 표시됩니다.
    Firebase PNV 앱 실행
  3. 통화 시작을 클릭하고 자신을 소개합니다.
    Firebase PNV 앱 실행
  4. AI 음성 에이전트에서 예약 세부정보를 묻는 메시지가 표시됩니다. 세부정보를 제공하면 화면을 보고 전화번호를 인증하라는 메시지가 표시됩니다.
    Firebase PNV 앱 실행
  5. 완료되면 인증 완료 화면이 표시됩니다.
    Firebase PNV 앱 실행
  6. 세션 종료 를 클릭하여 통화를 종료합니다.

5. (선택사항) 프로덕션 모드로 업그레이드

Firebase 요금제 업그레이드

프로덕션 모드에서 Firebase PNV를 사용하려면 Firebase 프로젝트가 사용한 만큼만 지불하는 (Blaze) 요금제를 사용하고 있어야 합니다. 즉, Cloud Billing 계정에 연결되어 있어야 합니다.

  • Cloud Billing 계정에는 신용카드와 같은 결제 수단이 필요합니다.
  • Firebase와 Google Cloud를 처음 사용하는 경우 $300 크레딧과 무료 체험판 Cloud Billing 계정을 받을 자격이 되는지 확인하세요.
  • 이벤트를 통해 이 Codelab을 진행하는 경우 주최자에게 사용 가능한 Cloud 크레딧이 있는지 문의하세요.

프로젝트를 Blaze 요금제로 업그레이드하려면 다음 단계를 따르세요.

  1. Firebase Console에서 요금제를 업그레이드하도록 선택합니다.
  2. Blaze 요금제를 선택합니다. 화면에 표시된 안내에 따라 Cloud Billing 계정을 프로젝트에 연결합니다.
    이 업그레이드의 일부로 Cloud Billing 계정을 만들어야 하는 경우 업그레이드를 완료하기 위해 Firebase Console의 업그레이드 흐름으로 돌아가야 할 수 있습니다.

Firebase PNV 프로덕션 모드 사용 설정

  1. 앱의 SHA-256 디지털 지문을 추가합니다.
    1. Firebase Console에서 설정 > 일반 페이지로 이동합니다.
    2. 내 앱 카드까지 아래로 스크롤하고 Android 앱을 찾습니다.
    3. SHA 인증서 디지털 지문 필드에 SHA-256 디지털 지문을 추가합니다. 앱의 SHA-256 디지털 지문을 얻는 방법에 대한 자세한 내용은 클라이언트 인증을 참조하세요.
  2. 보안 > 전화번호 인증으로 돌아갑니다.
  3. 프로덕션 설정 을 클릭합니다. 프로덕션에 사용 설정될 프로젝트의 앱 목록이 표시되며 앱을 추가할 수 있습니다.
  4. OAuth 브랜드 인증 및 개인정보처리방침 검토를 위해 앱을 제출합니다. Google Cloud에서 앱과 개인정보처리방침을 명확하고 정확하게 식별하는지 확인합니다.
    검토를 시작하려면 Google Cloud에서 계속을 클릭합니다. 이 절차는 24시간 이상 걸릴 수 있습니다.
  5. 브랜드 인증을 기다리는 동안 콘솔에서 연결된 Firebase PNV 서비스 관련 약관을 검토합니다.
  6. 앱이 브랜드 인증을 통과한 후 체크박스를 선택하여 서비스 관련 약관을 확인한 다음 사용 설정 을 클릭합니다.

이제 Firebase PNV가 프로덕션 모드에서 활성화되었습니다.

테스트 코드 삭제

Android 프로젝트에서 fpnv.enableTestSession(...) 줄을 삭제합니다.

Vertex AI를 사용하도록 Firebase AI Logic 마이그레이션

결제 계정에서 크레딧을 사용하는 경우 Gemini Developer API와 함께 사용할 수 없습니다. 하지만 Vertex AI Gemini API와 함께 사용할 수 있습니다.

  1. Firebase Console에서 AI 서비스 > AI Logic으로 이동합니다.
  2. 설정 을 클릭합니다.
  3. Vertex AI Gemini API 에서 사용 설정 을 클릭합니다.
  4. Android 프로젝트에서 Firebase AI Logic 초기화를 변경하여 Google AI 대신 Vertex AI 백엔드를 사용합니다.
    val model = Firebase.ai(
        backend = GenerativeBackend.vertexAI(location = "us-central1")
    ).liveModel(
        modelName = "gemini-live-2.5-flash-native-audio",
        // ... other configuration
    )
    

6. 수고하셨습니다.

Firebase 전화번호 인증을 Android 앱에 통합했습니다.

학습한 내용

  • Firebase PNV용 프로젝트 설정
  • 프로토타입 제작을 위한 테스트 모드 사용
  • Firebase PNV 단일 호출 API 구현
  • 프로덕션 모드로 업그레이드

다음 단계