Android Study

HashKey 구하기(feat. KakaoLogin)

85chong 2021. 5. 14. 18:13
728x90
반응형
SMALL

* 카카오로그인 연동 또는 페이스북 연동 등 sns 로그인 기능을 사용할때, android 와 해당 sns 간에 설정이 필요함 이때 중요한것이 hashKey 임

 

* 대부분 sns 로그인 연동 hashkey 설정 방식

- 기타 여러가지 설정이 준비 되면 반드시 서명된 hashkey 를 넣어야 함

이때, 로컬에서 작업하는 PC에 있는 .jks 키를 이용해 signed 된 hashKey를 구하여 넣는 경우가 있다. 앱을 말아서 따로 돌려봐도 문제가 없다.

하지만 이 상태로 앱스토어에 배포하게 되면 앱을 .jks 를 이용해 앱을 설치하여 확인했다고, 안심하면 안된다. 이 상태로 앱스토어에 배포후, 

다시 동작하면 아래와 같은 에러가 내려온다.

ex kakao) error : "invalid android_key_hash or ios_bundle_id or web_site_url"

* hashKey가 잘못됐다는 말이니 맞는 해쉬키를 추출해 주어야 한다.

 

 

 

* 스토어에 등록되는 인증서는 구글에서 따로 관리하기 때문에, 서비스 앱은 이 스토어에 등록되어 관리되어지는 SHA-1 을 이용해서 hashKey를 추출해야한다.

 

 

* sha-1 값 말아서 hashkey 추출하기

1. 구글 스토어 SHA-1 인증서 구하기

ex) 12:A3:BB:44:C5:DD:E6:77:88:99:F0:GG:HH:II:JJ:K1:LM:N2:OP:QR

 

 

2. 위의 ex 가 사용할 hash 값이라면, 앞에 0x 를 넣어서 아래처럼 만들어주면된다.

ex) 12 -> 0x12 

ex) A3 -> 0xA3

ex) BB -> 0xBB

ex) 44 -> 0x44

...

* base64 사용시 필요 lib : commons-codex-1.14.jar

    

 val sha1 = byteArrayOf(
              0x12.toByte()
            , 0xA3.toByte()
            , 0xBB.toByte()
            , 0x44.toByte()
            , 0xC5.toByte()
            , 0xDD.toByte()
            , 0xE6.toByte()
            , 0x77.toByte()
            , 0x88.toByte()
            , 0x99.toByte()
            , 0xF0.toByte()
            , 0xGG.toByte()
            , 0xHH.toByte()
            , 0xII.toByte()
            , 0xJJ.toByte()
            , 0xK1.toByte()
            , 0xLM.toByte()
            , 0xN2.toByte()
            , 0xOP.toByte()
            , 0xQR.toByte()
        )
...
var getHash = Base64.encodeBase64String(sha1)

 

3. 위의 형태로 만들어서 hash 값을 추출해준다.

 

4. 위의 getHash 값을 등록해주면 , 스토어에 올린 앱에 대한 kakao 로그인 또는 sns 로그인이 정상 oauth를 내려줄거임

 

 

 

5. 다른 방법으로는 해쉬값 추출후 아래와 같이 terminal 에서 명령어로 추출 할 수 도 있다.

echo 2:A3:BB:44:C5:DD:E6:77:88:99:F0:GG:HH:II:JJ:K1:LM:N2:OP:QR | xxd -r -p | openssl base64

 

 

- 끝 -