구글 로그인 버그

2021. 2. 9. 16:03기술/버그

반응형

 

조금 헷갈릴 수 있으니 하나씩 잘 살펴봐야 한다.

 

구글 로그인 실패 버그 메시지는 안드로이드 로그캣을 보면 확인할 수 있다.

아래 메시지로 구글 검색을 해보면 해결방안을 확인할 수 있다.

 

E/PlayGamesServices[SignInAuthenticator]: ****

 

APP NOT CORRECTLY CONFIGURED TO USE GOOGLE PLAY GAME SERVICES


    **** DEVELOPER_ERROR
    **** This is usually caused by one of these reasons:
    **** (1) Your package name and certificate fingerprint do not match
    ****     the client ID you registered in Developer Console.
    **** (2) Your App ID was incorrectly entered.
    **** (3) Your game settings have not been published and you are 
    ****     trying to log in with an account that is not listed as
    ****     a test account.
    ****
    **** To help you debug, here is the information about this app
    **** Package name         : __________________
    **** Cert SHA1 fingerprint: __________________
    **** App ID from manifest : __________________
    ****
    **** Check that the above information matches your setup in 
    **** Developer Console. Also, check that you're logging in with the
    **** right account (it should be listed in the Testers section if
    **** your project is not yet published).
    ****

 

이 버그가 나는 이유는

 

구글 플레이 콘솔을 사용하기 위해서는 Google Cloud Platform에서 설정해 주어야 하는 것들이 있다.

OAuth 2.0 클라이언트 ID를 두 개를 만들자. (만들어져 있으면 확인)

 

구글 플레이 콘솔에서 설정 > 앱 무결성을 보면

 

'앱 서명 키 인증서'와 '업로드 키 인증서' 두 가지가 존재한다. (SHA-1 인증서 지문이 중요)

 

업로드 키 인증서는 앱을 Keystore로 sign해서 올릴 때 값이 생성되는 것 같다. 귀찮지만 한 번 확인해주었다.

(업로드 키 인증서 SHA-1와 같은지 확인)

 

keytool 위치:

C:\Program Files\Unity\Hub\Editor\2020.3.14f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin\keytool

 

keytool -list -v -keystore "keystorefile.keystore" -alias "aliasname" -storepass "password" -keypass "password"

 

유니티에서 설정하는 Client ID는 Google Cloud Platform에서 앱 서명 키 인증서로 만든 Oauth 2.0 클라이언트 ID를 사용한다.

 

버그) 리더보드에 점수가 정상적으로 기록되지 않을 때. (리더보드 무한로딩)

증상) Android Logcat을 보면 점수가 정상적으로 보내지고 완료 함수도 작동한다.

하지만 앱에서 구글 리더보드를 열어보면 무한로딩을 확인할 수 있다.

해결방법) Google Cloud Platform에 Android 클라이언트 ID 만들 때, 이름을 '앱 서명 키 인증서'와 '업로드 키 인증서'로 해서 만들어 두자. 그래야 헷갈리지 않는다.

CloudOnce에서는 Client ID 설정하는 부분이 없는데 구글 플레이 콘솔 > 설정 및 관리 > 설정 > 사용자 인증 정보 > '업로드 키 인증서'로 사용해야 리더보드에 점수가 정상적으로 기록된다.

 


APK를 바로 설치해서 테스트 하는 경우 불법 복제 방지 사용을 꺼본다. (출시 후 사용으로 설정)

 

저장된 게임 사용이라면 구글 로그인 할 때 필요한 코드에서 설정을 해준다.

PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
            // 게임 저장 기능을 켭니다. enables saving game progress.
            .EnableSavedGames()

 

Game appid not licensed to player

유니티 빌드 설정 > 퍼블리싱 설정에서 > 커스텀 메인 매니페스트 체크 박스를 끈다. (혹시 모르니)

 

Assets\Google\GooglePlayGames\Plugins\Android 폴더에 있는 AndroidManifest.xml 파일에

 

<application>
    <!-- The space in these forces it to be interpreted as a string vs. int -->
    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="\u003_____id_________" />

 

구글 플레이 콘솔에 id와 맞는지 확인한다.

 

테스터 등록에 내가 테스트 기기에서 사용하는 구글 계정 이메일이 잘 등록되어 있는지 확인한다.

 

 

그래도 구글 로그인이 안 된다면

게시 탭에서 모두 출시 준비 초록색 아이콘이 뜨는지 확인. 출시 버튼이 활성화 돼있는지 확인한다.

 

signinrequest setting result error status code to: 16

빌드 설정창에서 Proguard File 체크 하고 파일을 만든다음 다음을 추가

-keep class com.google.games.** { _; }

-keep interface com.google.games._* { *; }

 

 

또는 CloudOnce 등에서 프로젝트 ID: 141000007975 가 Play 게임즈 서비스 설정과 같은지 확인한다.

 

 

 

반응형