이 글은 Firebase Authentication - Google Login 시 발생할 수 있는 에러를 해결하면서 마주칠 수 있는 사안에 대해 기술한 글입니다.

아래 그림은 Firebase Authentication SignIn 관련 코드를 추가했을 때 나오는 화면이며, SignIn 시 에러 코드를 발생시키며, 더 이상 진행되지 않을 때입니다.

UX 에서 딱히 어떤 에러 상황을 보여주지 않기 때문에, (로그인에 실패하였습니다! 팝업같은) 코드가 제대로 들어간 것인지 혹은 서버의 문제인 것인지 처음 닥쳤을 때는 조금 당황할 수 밖에 없습니다.

참고로 출처는 구글 코드랩 (https://firebase.google.com/codelabs/firebase-android?hl=ko#5) 입니다.

Firebase SignInActivity

 

 

0. 문제의 원인

Android SHA-1 FingerPrint 부재

앱을 플레이스토어에 올리려고 할 때 필요한 '나의 시그니처(사인)' 이 없어서 입니다.

<이건 내가 만든 거야 그러니깐 나중에 업데이트할 때도 이 사인을 보고 내가 한 게 맞을 때 업데이트 하라고!> 얘기해주는 것이조

 

1. 이제 시작인데, ...

처음 앱을 만들 때에는 보통 이런 사인 없이도 테스트해볼 수 있습니다.

왜냐하면, <안드로이드 스튜디오> 에서 기본 값을 넣어주기 때문입니다.

 

이 때 사용하는 키스토어는 .android/debug.keystore 입니다.

MS윈도우와 Mac 의 기본 저장위치가 조금 다르니 아래 코드를 참고하세요. storepass, alias, keypass 는 동일합니다.

 

keytool -list -v -keystore c:\Users\<%mylogin%>.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
Alias name: androiddebugkey
Creation date: 2023. 3. XX.
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: C=US, O=Android, CN=Android Debug
Issuer: C=US, O=Android, CN=Android Debug
Serial number: 1
Valid from: Fri Mar XX 16:57:34 KST 2023 until: Sun Mar XX 16:57:34 KST 2053
Certificate fingerprints:
	 SHA1: 3F:EA:C9:19:DC:AD:3E:EE:3F:C1:2B:BB:71:B8:84:10:
	 SHA256: D4:5D:DB:FA:A2:61:05:AF:EF:66:B8:61:A4:4F:10:89
Signature algorithm name: SHA1withRSA (weak)
Subject Public Key Algorithm: 2048-bit RSA key
Version: 1

Warning:
The certificate uses the SHA1withRSA signature algorithm which is considered a security risk.

 

 

firebase console(https://console.firebase.google.com/) 에서 프로젝트를 선택한 뒤, 프로젝트 설정을 선택합니다.

그리고 설정 화면에서 맨 아래로 내려가면, 내 앱> 앱 추가 를 선택하여 패키지명과 FingerPrint 값(위 코드를 실행시켰을 때 나오는) 을 입력해 주면 됩니다.

 

 

 

 

2. 이 시점에서 키스토어를 만드시는 것도 ...

Android Studio > Build > Generate Signed Bundle / Apk > Next > 중간에 Create New 버튼을 누르시면 키스토어를 만드실 수 있습니다.

 

 

그리고, 만들어진 keystore 에서 나온 FingerPrint 값을 Firestore 에 등록해 놓고, 아래와 같이 build.gradle 파일에서 해당 signingConfig 를 debug 에서 사용하는 것도 나쁘지 않은 방법입니다.

실제로 저도 실서비스에서만 발생하는 버그를 찾기위해서 아래와 같은 방법을 종종 사용하곤 합니다.

 

    buildTypes {
        debug {
            //signingConfig signingConfigs.release
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    signingConfigs {
        release {
            storeFile rootProject.file('key.store')
            keyAlias 'key1234'
            keyPassword '123456'
            storePassword '123456'
        }
    }

 

3. 덧붙임

테스트 중이 "Code : 7" 에러가 나왔던 적이 있었던 것 같은데, 정확하지는 않지만, SignUp 이 제대로 되지 않아서 발생했던 것으로 기억합니다. 참고하시길~

 

'Android' 카테고리의 다른 글

Android targetSdkVersion=30, queryIntentActivities() 문제  (0) 2022.01.10
Gson - Android Proguard 문제  (0) 2020.11.12
Android Studio - Database Inspector  (0) 2020.11.04
Android AlertDialog Style 변경  (0) 2020.08.05
Android Custom Lint  (0) 2020.07.28

 

Google Firebase 는 혼자 앱 개발을 할 때 필요한 것들을 무료로 제공해줍니다.

이 중 혼자 개발 할 때 가장 유용한 것 중 하나는 TestLab 입니다.

TestLab 은 하루에  가상기기 10 대, 실제기기 5대에서 테스트를 해 볼 수 있습니다.

스크립트를 사용해서 자신이 원하는 테스트를 해볼 수 도 있지만, Robo - 자동 테스트를 보통 사용합니다.

 

테스트 실행 > Robo

 

apk 혹은 aab 를 업로드 하면 테스트를 진행할 수 있습니다.
필터링 을 선택하면, 제조사 혹은 API Level 로 구분해서 선택할 수 있습니다.

 

물론, 테스트에 필요한 기기가 조금 아쉬울 때가 있긴 합니다. 많은 듯 하면서, 그렇게 많지 않습니다.

하지만, 무료로 제공해주는 기능이기 때문에 그렇게 불만은 없습니다.

구글 레퍼런스 폰 계열의 다른 API Level, 가상기기 정도만 제공해 주어도 만족합니다.

 

테스트를 마친 뒤 결과 화면, 각각 클릭해서 들어가면, 스크린 샷과 테스트 동영상을 확인할 수 있습니다.

 

Firebase TestLab 은 Google PlayStore Publisher 들에게 제공하는 <사전 출시 보고서> 와 동일합니다.

자동 스크립트는 View 에 설정된 Key Event 혹은 OnClick Event 에 따라 모든 UX 경로를 실행하려고 시도합니다.

그러므로, 출시 이전에 미리 예상치 않은 Exception 혹은 Error 가 발생하는지 확인해 볼 수 있습니다.

 

이 자동 스크립트는 약간 비효율적일수는 있지만, 자동으로 도는 것인데다,

간혹, 예상치 않았던 경로를 찾아내기도 하기 때문에, 혼자 앱을 개발하는 개발자에게는 매우 유용한 도구 입니다.

 

 

#Firebase, #GoogleFirebase, #FirebaseTestLab, #GoogleFirebaseTestLab