본문 바로가기
프로그래밍/리액트 네이티브

리액트 네이티브 카카오톡 공유하기(feat. 윈도우 10, 구글 플레이 앱 서명)

by 망고데이 2020. 1. 23.
반응형

카카오톡 공유하기를 구현하는 건 어렵지 않다. (물론 직접 만들진 않는다..)

https://github.com/shpongle2634/react-native-kakao-links

 

shpongle2634/react-native-kakao-links

React-Native Kakao Link Module. Contribute to shpongle2634/react-native-kakao-links development by creating an account on GitHub.

github.com

 

이 라이브러리를 사용하면 되기 때문이다. 

하지만 개발 시에는 잘 되던 공유하기 기능하기 기능이 릴리즈 모드에서는 제대로 동작을 하지 않았다. 물론 짐작대로 사이닝 키 관련 문제였는데 카카오 개발자 콘솔에 키 해시를 적절하게 넣어 주어야 했기 때문이다. 개발 시에는 문서에 나와 있는대로 openssl을 설치하고(그렇다.. 윈도우는 힘들다) keytools를 사용해서 키해시를 구할 수 있다.

https://developers.kakao.com/docs/android#%ED%82%A4%ED%95%B4%EC%8B%9C-%EB%93%B1%EB%A1%9D

 

Kakao Developers_

더 나은 세상을 꿈꾸고 그것을 현실로 만드는 이를 위하여 카카오에서 앱 개발 플랫폼 서비스를 시작합니다.

developers.kakao.com

 

그런데 vscode를 사용할 때 약간 문제가 되는 게 있다. 엄밀히 말하면 vsCode를 사용해서 문제는 아니다. 터미널을 열면 윈도우는 가장 먼저 powershell이 나오는데 이게 문제가 된다. powershell에서 저 커멘드를 입력해서 얻는 키 해시와 cmd에서 입력해서 얻는 키 해시가 다르기 때문이다.

https://chichi.space/post/android-debug-key-hash-on-windows/

 

윈도우 환경에서 안드로이드 debug key hash 뽑아내기

윈도우 환경의 안드로이드 debug key hash 생성 과정에서 제대로 된 28자의 hash를 뱉어내는 대신 그것보다 짧거나 긴, 비정상 해시가 나오는 경우가 있습니다.

chichi.space

 

결론적으로 cmd에서 얻은 키 해시를 사용해야 한다.

일단 openssl은 

https://code.google.com/archive/p/openssl-for-windows/downloads

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

 

여기서 다운이 가능한데, 카카오 개발자 포럼?에는 openssl에 따라 키 해시가 다르게 나온다는 것이다. 링크는 까먹었는데, 간단하게 언급하면 openssl-0.9.8e냐 openssl-0.9.8k냐에 따라 값이 다르다고 하는 것이다. 나는 0.9.8k를 받아서 환경변수 등록해서 사용했다.

(참고로 이 외에도 keystore alias가 달라도 바뀐다. 등등....)

이렇게 해서 카카오 개발자 콘솔?에서 앱 해시 키 입력하는 데 넣어주면 된다.

... 디버그 모드에서는.

릴리즈 모드는 뭐가 문제냐

구글 플레이 앱 서명 때문이다. 

때문이라니까 나쁜 거 같은데 권장이라고 하니깐.. 좋은 거겠지

아무튼 키 해시값은 결국 keystore의 값을 기반으로 openssl로 ~~해서 만들어지는 값인데,

구글 플레이 앱 서명을 사용하면 내가 로컬이 갖고 있는 release용 키는 단순히 업로드용 키 서명으로 사용되고 실제 앱 서명은 구글 플레이에서 제공하기 때문이다. 

그래서 Google Play Console의 앱 서명 부분에 가서 앱 서명 인증서의 sha1을 사용해서 해시 키를 만들어야 한다.

이건 어떻게 만드냐

https://right-hot.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%82%A4%ED%95%B4%EC%8B%9C-%EC%96%BB%EB%8A%94-%EB%B0%A9%EB%B2%95-debug-keyhash-release-keyhash-googlePlay-keyhash

 

[안드로이드] 키해시 얻는 방법 (debug keyhash, release keyhash, googlePlay keyhash)

안드로이드에서 카카오톡 로그인이라던가 페이스북로그인 등 API를 사용하기 위해선 키해시를 해당 사이트에 넣어줘야 한다. 키해시 얻는 방법 (debug keyhash, release keyhash, googlePlay keyhash) 디버그 키해..

right-hot.tistory.com

 

여기 설명을 해주셨다.

근데 마지막을 읽다보면..파이프를 쓰고 xxd 명령어를 를 입력해야 하는데 이 xxd 명령어는 윈도우에는 없는 명령어...

결국 블로그 내용대로 나 역시 크롬의 리눅스 가상머신을 설치했다. (이런 게 있는지 처음 알았다)

https://chrome.google.com/webstore/detail/termlinux-terminal-for-co/hlgjjjociconbkooaggfmjhalogadcee?hl=en

 

TermLinux 명령 행을위한 터미널

소형 온라인 리눅스 가상 머신에 명령 행 콘솔을 제공하는 웹 터미널

chrome.google.com

 

결국 여기서 커맨드를 입력해서 해시 키를 얻은 후 최종적으로 카카오 디벨로퍼 콘솔에 넣어 줌으로써 해결했다.

echo <구글플레이 SHA-1 인증서지문 입력> | xxd -r -p | openssl base64

 

이건 약간 주관적일 수는 있으나 내 경우엔 영어 대문자로 시작해서 =로 끝나면 대강 맞는 해시 키 인 듯 하다.

카카오 개발 가이드 문서를 다시 보면 '앱 내 자바 코드로 키해시 구하기'라는 부분도 있기는 하다.

근데 이건 이걸 어디서 호출해야 하는지, 그리고 언제 출력되는지 등등 안드로이드가 너무 익숙하지 않아서 사용하지 않았다. 이걸 사용하면 더 간단하게 키 해시를 얻을 수 있지 않을까 싶기도 하다.

반응형