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

이 Codelab에서는 Firebase 전화번호 인증을 사용하여 테이블 예약을 확인하기 전에 최종 사용자의 전화번호를 인증하는 '레스토랑 찾기' AI 음성 에이전트를 빌드하는 방법을 알아봅니다.
기본 요건
- 최신 버전의 Android 스튜디오
- API 수준 26 이상을 실행하는 Android 기기 또는 에뮬레이터
학습할 내용
- Firebase PNV로 Firebase 프로젝트를 설정합니다.
- 결제 계정 또는 실제 SIM 없이 프로토타입을 제작하려면 테스트 모드 에서 Firebase PNV를 사용합니다.
- Firebase PNV SDK를 Android 앱에 통합합니다.
- 단일 호출 API를 사용하여 전화번호를 인증합니다.
- _선택사항_ 프로덕션용 앱을 준비합니다.
2. 샘플 프로젝트 설정
Firebase 프로젝트 만들기
- Google 계정을 사용하여 Firebase Console에 로그인합니다.
- 버튼을 클릭하여 새 프로젝트를 만든 다음 프로젝트 이름 (예:
Tera Bites)을 입력합니다.
- 계속 을 클릭합니다.
- 메시지가 표시되면 Firebase 약관을 검토하고 이에 동의한 다음 계속을 클릭합니다.
- 선택사항 Firebase Console에서 AI 지원('Firebase의 Gemini'라고 함)을 사용 설정합니다.
- 이 Codelab에서는 Google 애널리틱스가 필요하지 않으므로 Google 애널리틱스 옵션을 사용 중지 합니다.
- 프로젝트 만들기 를 클릭하고 프로젝트가 프로비저닝될 때까지 기다린 다음 계속 을 클릭합니다.
코드 다운로드
다음 명령어를 실행하여 이 Codelab의 샘플 코드를 클론합니다.
git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd codelabs/firebase-pnv-android
Android 스튜디오에서 firebase-pnv-android 디렉터리를 엽니다.
Android 프로젝트를 Firebase에 연결
- Firebase Console의 프로젝트 개요 페이지 중앙에 있는 Android 아이콘 또는 앱 추가 를 클릭하여 앱 만들기 워크플로를 시작합니다.
- Android 패키지 이름 필드에 앱의 패키지 이름(
com.google.firebase.example.fpnv)을 입력합니다. - 앱 등록 을 클릭합니다.
- 안내에 따라
google-services.json파일을 다운로드하고 방금 다운로드한 코드의app/디렉터리로 이동합니다. - 다음 을 클릭합니다.
Firebase AI Logic 사용 설정
이 Codelab에서는 Firebase AI Logic을 사용하여 AI 음성 에이전트를 지원합니다. Firebase 프로젝트에서 Firebase AI Logic을 사용 설정하려면 다음 단계를 따르세요.
- Firebase Console에서 AI 서비스 > AI Logic으로 이동합니다.
- 시작하기 를 클릭합니다.
- 이 API 시작하기 를 클릭하여 Gemini Developer API 를 사용하도록 선택합니다.
- API 사용 설정 을 클릭하고 확인합니다.
3. 테스트 모드에서 Firebase PNV 설정
테스트 모드를 사용하면 개발을 위해 테스트 토큰을 사용하여 '가짜' 전화번호를 인증할 수 있습니다.
Google 시스템 서비스 공개 베타 프로그램 참여
테스트 모드를 사용하려면 개발 기기를 Google 시스템 서비스 베타 채널에 등록하세요.
- Android 앱 테스트 - Google 시스템 서비스 페이지로 이동합니다.
- 테스트 참여하기 를 클릭합니다.
이제 Google 시스템 서비스의 베타 테스터가 되었습니다.
Firebase PNV 종속 항목 추가
Android 프로젝트의 코드베이스에서 Firebase PNV 및 Firebase AI Logic 라이브러리의 종속 항목은 파일에 이미 정의되어 있습니다.
[versions]
# ... other dependencies
firebaseBom = "34.13.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 파일 (일반적으로 )에서 Firebase PNV 라이브러리의 종속 항목을 선언합니다.
dependencies {
// ... other dependencies
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.ai.logic)
// Add this line
implementation(libs.firebase.pnv)
// ...
}
테스트 토큰 생성
- Firebase Console에서 보안 > 전화번호 인증으로 이동합니다.
- 테스트 탭을 선택합니다.
- 테스트용 전화번호의 국가 코드를 선택하고 토큰 생성 을 클릭합니다.
- 생성된 토큰 문자열을 복사합니다.
코드에서 테스트 세션 사용 설정
- Android 프로젝트로 돌아가
ChatViewModel.kt파일을 열고verifyPhoneNumber()함수를 찾습니다. FirebasePhoneNumberVerification클라이언트를 초기화하고 테스트 세션을 사용 설정하여 Firebase Console에서 복사한 토큰을 붙여넣습니다.suspend fun verifyPhoneNumber(): String { // Initialize Firebase Phone Number Verification val fpnv = FirebasePhoneNumberVerification.getInstance() // Enable Test session fpnv.enableTestSession("PASTE_THE_TOKEN_YOU_COPIED_IN_PREV_STEP") // Trigger the Firebase PNV pop up val response = fpnv.getVerifiedPhoneNumber(context!!).await() val phoneNumber = response.getPhoneNumber() return phoneNumber }
4. 앱 실행
이제 Firebase PNV를 구현했으므로 앱을 실행할 차례입니다.
- Android 스튜디오에서 실행 을 클릭하여 Android 에뮬레이터 또는 실제 기기에서 앱을 실행합니다.
- 앱이 실행되면 다음과 같은 화면이 표시됩니다.

- 통화 시작을 클릭하고 자신을 소개합니다.

- AI 음성 에이전트에서 예약 세부정보를 묻는 메시지가 표시됩니다. 세부정보를 제공하면 화면을 보고 전화번호를 인증하라는 메시지가 표시됩니다.

- 완료되면 인증 완료 화면이 표시됩니다.

- 세션 종료 를 클릭하여 통화를 종료합니다.
5. _선택사항_ 프로덕션 모드로 업그레이드
Firebase 요금제 업그레이드
프로덕션 모드에서 Firebase PNV를 사용하려면 Firebase 프로젝트가 사용한 만큼만 지불하는 (Blaze) 요금제를 사용하고 있어야 합니다. 즉, Cloud Billing 계정에 연결되어 있어야 합니다.
- Cloud Billing 계정에는 신용카드와 같은 결제 수단이 필요합니다.
- 특별 프로모션 중이거나 이벤트의 일환으로 이 Codelab을 진행하는 경우 Google Cloud 크레딧을 사용할 수 있습니다 (예: 이 페이지 상단의 배너).
- Firebase와 Google Cloud를 처음 사용하는 경우 $300 크레딧과 무료 체험판 Cloud Billing 계정을 받을 자격이 되는지 확인하세요.
프로젝트를 Blaze 요금제로 업그레이드하려면 다음 단계를 따르세요.
- Firebase Console에서 요금제를 업그레이드하도록 선택합니다.
- Blaze 요금제를 선택합니다. 화면의 안내에 따라 Cloud Billing 계정을 프로젝트에 연결합니다.
- 이 Codelab에 Google Cloud 크레딧을 청구한 경우 결제 계정의 이름은
Google Cloud Platform Trial Billing Account또는My Billing Account일 수 있습니다. - 이 업그레이드의 일환으로 Cloud Billing 계정을 만들어야 하는 경우 업그레이드를 완료하기 위해 Firebase Console의 업그레이드 흐름으로 돌아가야 할 수 있습니다.
- 이 Codelab에 Google Cloud 크레딧을 청구한 경우 결제 계정의 이름은
Firebase PNV 프로덕션 모드 사용 설정
- 앱의 SHA-256 디지털 지문을 추가합니다.
- Firebase Console에서 설정 > 일반 페이지로 이동합니다.
- 내 앱 카드까지 아래로 스크롤하고 Android 앱을 찾습니다.
- SHA 인증서 지문 필드에 SHA-256 디지털 지문을 추가합니다. 앱의 SHA-256 디지털 지문을 얻는 방법에 대한 자세한 내용은 클라이언트 인증을 참조하세요.
- 보안 > 전화번호 인증으로 돌아갑니다.
- 프로덕션 설정 을 클릭합니다. 프로덕션에 사용 설정될 프로젝트의 앱 목록이 표시되며 앱을 추가할 수 있습니다.
- OAuth 브랜드 인증 및 개인정보처리방침 검토를 위해 앱을 제출합니다. Google Cloud는 앱과 개인정보처리방침을 명확하고 정확하게 식별하는지 확인합니다.
검토를 시작하려면 Google Cloud에서 계속 을 클릭합니다. 이 절차는 24시간 이상 걸릴 수 있습니다. - 브랜드 인증을 기다리는 동안 콘솔에서 연결된 Firebase PNV 서비스 관련 약관을 검토합니다.
- 앱이 브랜드 인증을 통과한 후 체크박스를 선택하여 서비스 관련 약관에 동의한 다음 사용 설정 을 클릭합니다.
이제 Firebase PNV가 프로덕션 모드에서 활성화되었습니다.
테스트 코드 삭제
Android 프로젝트에서 fpnv.enableTestSession(...) 줄을 삭제합니다.
Vertex AI를 사용하도록 Firebase AI Logic 마이그레이션
결제 계정에서 크레딧을 사용하는 경우 Gemini Developer API와 함께 사용할 수 없습니다. 하지만 Vertex AI Gemini API와 함께 사용할 수 있습니다.
- Firebase Console에서 AI 서비스 > AI Logic으로 이동합니다.
- 설정 을 클릭합니다.
- Vertex AI Gemini API 에서 사용 설정 을 클릭합니다.
- 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 구현
- 프로덕션 모드로 업그레이드
다음 단계
- Firebase PNV 흐름을 맞춤설정하는 방법을 알아봅니다.
- Firebase PNV 토큰을 인증하는 방법을 알아봅니다.
- 가격 책정 및 할당량을 확인합니다.