[Flutter] 카카오 로그인 구현하기 ① ( 환경설정 )
프로젝트에서 카카오 로그인 구현을 담당하게 됐다.
Firebase 푸시 알림에 이어 프로젝트 내 두번째 서버와의 통신 작업이다. ( 왜일까 프론트와 점점 멀어져가는 느낌..? )
하지만 맡은 역할은 책임있게 다 해야하기에 카카오 로그인에 하루를 통째로 투자해 성공시킨 내 경험을 녹여낸 카카오 구현 방법이다. ( 내 자유시간은 어디에... )
1. 어플리케이션 등록
https://developers.kakao.com/console/app
카카오계정
accounts.kakao.com
위의 링크에 들어가야지 카카오 로그인 서비스를 만들 수 있다.
어플리케이션 추가를 누르면 아래와 같은 화면이 보인다.
본인 어플리케이션 명과 사업자명 카테고리를 넣으면 되는데
"어.. 나는 앱출시할생각 없고 디버그로 할건데 나도 해도 되는건가?" => 해도 된다. 임의로 적어서 내도 된다.
만들고 들어가면
이 화면 옆에 키값들이 보일 것이다.
유용하게 사용할 것이기에 메모장에 적어두던가 북마크 해두는 것을 추천한다.
이제 내 애플리케이션 > 제품 설정 > 카카오 로그인으로 들어와
활성화 설정을 ON으로 만들어준다 => 그래야 작동이 된다.
이제 내 애플리케이션 > 앱 설정 > 플랫폼으로 이동한다.
우선 Android를 설정해보자. Android 플랫폼 등록 버튼을 누르자.
이런 화면이 나올텐데 패키지명은 Flutter프로젝트의 android-app-main-AndroidManifest.xml의 proj명을 적고
키해시는 공식문서에 따르면 ( 문서 > Android > 시작하기 : https://developers.kakao.com/docs/latest/ko/android/getting-started)
디버그 키 해시 ( 배포하지 않는 사람들의 경우 )
keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
이걸 터미널에 입력해서 키해시를 받아와서 사용한다.
openssl이 정의되지 않는다고 실행이 되지 않는다면 아래의 방법을 추천한다.
https://code.google.com/archive/p/openssl-for-windows/downloads
다운 후 C:\Program Files\Openssl\openssl-0.9.8k_X64\bin 가 될 수 있게 파일을 옮긴다.
시스템 환경변수 설정 : 시스템 환경변수 - 환경변수 - 시스템 변수 - Path(편집) - 새로만들기 (C:\Program Files\Openssl\openssl-0.9.8k_X64\bin) 추가
다시 위의 명령어를 입력해 키 해시를 받아오고 Android 플랫폼 등록란에 적으면 사전 준비는 끝이난다.
그런데 키 해시를 얻는 방법은 한가지가 더 있다.
코드이용으로 debug key hash 추출이 가능하다 ( release key hash는 보안상의 이유로 코드로 알 수 없다 )
fun getKeyHash() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val packageInfo = requireContext().packageManager.getPackageInfo(requireContext().packageName, PackageManager.GET_SIGNING_CERTIFICATES)
for (signature in packageInfo.signingInfo.apkContentsSigners) {
try {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("getKeyHash", "key hash: ${Base64.encodeToString(md.digest(), Base64.NO_WRAP)}")
} catch (e: NoSuchAlgorithmException) {
Log.w("getKeyHash", "Unable to get MessageDigest. signature=$signature", e)
}
}
}
}
코드로 추출하는 방법 출처 : https://velog.io/@iamjm29/Android-%ED%82%A4%ED%95%B4%EC%8B%9Ckey-hash-%EC%B6%94%EC%B6%9C%ED%95%98%EA%B8%B0