본문 바로가기

안드로이드

[Android] SNS 로그인 키해시(key hash) 추출

SNS 로그인 연동시 확인해야 할 키해시는 아래와 같이 총 3가지가 필요하다.

- debug key hash

- release key hash

- google app signing key hash

 

 

 

디버그모드 (개발자 테스트)용으로 로그인 확인할 때는 debug key hash 가 필요,

release apk 로 로그인 확인할 때는 release key hash 가 필요,

앱을 출시할 때, 구글콘솔에서 google app signing (Google Play 앱 서명) 을 사용 설정 하였을 경우,

google app signing key hash가 필요하다.

 

google app signing 설정한 경우

 

 

뭔지 잘 모르겠다면 3가지 key hash 모두 추출하여 각 SNS콘솔에 등록하면 된다.

 

 

 


 

 

 

key hash 추출전 먼저, 'OpenSSL 설치 및 환경변수 설정' 이 필요하다.

 

OpenSSL 설치 및 환경변수 설정

OpenSSL 다운로드

: https://sourceforge.net/projects/openssl/

 

 

압축해제 후 C폴더로 이동

- 아무폴더나 상관없지만 편의상 C폴더로 이동

 

 

 

환경변수 설정

- Path 부분 에 OpenSSL 폴더 안의 bin 폴더 경로 입력 후 저장

 

 

 

 


 

 

 

 

OpenSSL 설치가 완료되었으니 이제부터 hasy key 추출을 진행할 수 있다.

Commnad 창 실행 (윈도키 + R -> cmd 입력 후 enter) 

 

debug key hash 추출 

keytool -exportcert -alias androiddebugkey -keystore <debug_keystore_path> -storepass android -keypass android | openssl sha1 -binary | openssl base64

: <debug_keystore_path> 부분에 앱의 keystore 경로 입력

: keystore 경로는 자신이 생성한 키 경로를 적어주면 되는데, 나의 경우 프로젝트 app 폴더안에 저장해서 그 경로를 적어줬음

: 아래 결과의 빨간색 부분이 key hash

실행 결과

 

release key hash 추출 

keytool -exportcert -alias <release_key_alias> -keystore <release_keystore_path> | openssl sha1 -binary | openssl base64

: <release_key_alias> 부분에 key의 alias 값, <release_keystore_path> 부분에 앱의 keystore 경로 입력

: alias 값은 자신이 키 생성시 작성했던 값을 넣으면 됨

: 키 비밀번호 입력

: 아래 결과의 빨간색 부분이 key hash

실행 결과

 

 

google app signing key hash 추출

구글콘솔 -> 출시 관리 -> 앱 서명 이동 & SHA-1 인증서 지문 복사

 

안드로이드 스튜디오 프로젝트 내에 테스트해볼 수 있는 페이지에 아래 함수 추가 후 로그확인.

- SHA-1 인증서를 아래 형식(숫자 앞에  0x만 추가)으로 변환해야 한다.

ex) 14:80:F5 -> 0x14, 0x80, 0xF5  // 중간중간에 빨간줄 끄이는 경우에는 (byte) 라는 형 지정자를 명시하면 된다.

private void getReleaseHashKey() {
        byte[] sha1 = {
                0x14, (byte) 0x80, (byte) 0xF5, 0x6C, (byte) 0xA9, 0x40, (byte) 0xD0, 0x6E, (byte) 0xF7, 0x0E, 0x28, ....
        };
        Log.i(StringUtil.TAG, "getReleaseHashKey: " + Base64.encodeToString(sha1, Base64.NO_WRAP));
    }