* 카카오로그인 연동 또는 페이스북 연동 등 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
- 끝 -
'Android Study' 카테고리의 다른 글
WebViewSettings 속성 (feat.Kotlin) (0) | 2021.07.27 |
---|---|
ConstrainLayout으로 LinearLayout weight 와 같은 효과 적용(vertical) (0) | 2021.07.22 |
Android 디바이스 사이즈 폴더별 해상도 (0) | 2021.05.07 |
Android apk분할(flavor)+FirebaseProjA+FirebaseProjB 사용시, 필수적인 google-service.json 설정방법 (0) | 2021.04.28 |
Android Intent 호출 Flag 사용법(feat.Kotlin) (0) | 2021.03.23 |