프로젝트 구조
프로젝트 구조는
안드로이드 - Nodejs Express서버 - Mysql이고, 클라이언트인 안드로이드와 서버인 nodejs는 REST API로 서로 통신한다.
예를 들면, 회원가입의 경우, 클라이언트 쪽인 안드로이드에서 정보를 입력하고 회원가입 버튼을 누르면 Nodejs 서버로 데이터를 넘겨 유효성 검사를 한 뒤, DB에 저장하고 결과 응답을 다시 안드로이드에 보내는 형식이다.
카카오톡 연동 로그인을 어떻게 위의 구조에 맞출 수 있을지 고민하였고, Kakao SDK for Android 로 개발하기로 하였다.
개발 참고 블로그
https://it-hhhj2.tistory.com/47
1 ) 애플리케이션 등록
1-1. 카카오톡 API 사용을 위해, 개발자 웹사이트에서 애플리케이션을 추가하자
https://developers.kakao.com/console/app
1-2. 카카오 로그인 활성화
카카오 로그인 기능을 활성화해야 후에 개발시 로그인 기능을 오류 없이 사용할 수 있다.
1-3. Redirect URI 설정
Redirect URI는 Oauth 2.0을 기반으로 동작하는 카카오 로그인의 핵심 요소입니다.
카카오 로그인은 서비스와 카카오 서버가 서로 정보를 주고받는 방식으로 진행됩니다. 카카오 서버는 Redirect URI로 서비스에서 필요한 로그인 인증 정보를 보내고, 서비스는 Redirect URI로 받은 로그인 인증 정보를 처리해 다음 단계 요청을 보냅니다. 따라서 이 정보가 앱 설정에 등록되어 있지 않으면 카카오 로그인 시 에러가 발생합니다.
출처 : https://developers.kakao.com/docs/latest/ko/kakaologin/prerequisite#kakao-login
1-4. 동의항목 설정
카카오 로그인시 카카오계정에서 정보를 가져올 수 있는데, 이때 동의한 항목에 대해서만 정보를 가져온다.
동의 목적은 실제 클라이언트 화면에서는 보여지지 않지만, 카카오에서 검수할 때 필요하다.
이메일과 성별, 생일은 선택 동의로 해놓은 상태고, 이메일은 추후 필수 선택으로 바꿀 예정이다. (필수 선택을 위해선 사업자 번호가 필요하여 추후로 미룬다.)
2) Kakao SDK for Android 설정
https://developers.kakao.com/docs/latest/ko/kakaologin/android 참고
2-1. Gradle 설정하기
프로젝트의 Gradle 설정하여 Android SDK를 연동한다.
2-1. build.gradle(Module) 파일에 카카오 로그인 모듈인 v2-user를 추가하고,
Java 8 사용을 위해 설정을 해준다.
2-2. AndroidManifest.xml에 인터넷 사용권한 설정한다.
2-3. Android SDK 사용을 위해 네이티브 앱 키로 초기화 한다.
AppKey는 developer 사이트에서 '내 애플리케이션 > 앱 설정 > 요약 정보' 에서 앱 키의 네이티브 키 값이다.
2-4. 키 해시 등록
키 해시(Key Hash)란 인증서(Certificate)의 인증서 지문 값(Certificate fingerprints)을 해시(hash)한 값으로, 악성 앱인지 판별하는 데 사용됩니다. 카카오 API를 호출하면 카카오 API 서버가 요청 헤더에 추가된 키 해시값과 카카오 플랫폼에 등록한 값이 일치하는지 확인합니다. 키 해시는 디버그 키 해시(Debug key hash)와 릴리즈 키 해시(Release key hash) 두 가지가 있습니다.
- 디버그 키 해시: 프로젝트를 처음 생성하거나 디버그할 때, 안드로이드 스튜디오에서 개발 환경에 맞게 자동으로 생성되는 디버그 인증서에서 해시(hash)한 값입니다.
- 릴리즈 키 해시: 앱 스토어에 앱을 배포하기 위해 생성한 릴리즈 인증서로부터 해시한 값입니다.
이 중 '디버그 키 해시'로 해시값을 구할 것이다.
3) 카카오 로그인
https://developers.kakao.com/docs/latest/ko/kakaologin/android 참고
3-1. Redirect URI 설정하기
카카오 로그인을 위해서는 리다이렉션을 통해 인가 코드를 받아야한다.
이를 AndroidManifest.xml에서 설정해주면 된다.
scheme속성의 값은 'kakao{NATIVE_APP_KEY}' 형식으로 입력합니다. 예를 들어 네이티브 앱 키가 '123456789'라면 'kakao123456789'를 입력합니다.
3-2. 카카오톡으로 로그인 구현하기