[Android / Kotlin] SNS 로그인 api | Kakao (1)

Happy Jiwon·2023년 1월 19일
0

Kotlin

목록 보기
1/6
post-thumbnail

시작하기 전...

클라이언트 입장에서 수많은 사이트의 모든 아이디 비밀번호를 기억하기는 쉽지 않다. 또한 서비스를 제공해주는 리소스 오너 또한 안전하게 보관하여야 하기 때문에 부담된다. 이런 문제를 해결하기 위해, 구글이나, 페이스북, 카카오 같은 큰 기업들이 로그인 연동 기능을 제공하고 있다.

여러 SNS 로그인 API 사용법에 대해 다뤄볼 예정이다.

이번 포스팅에는 Kakao SDK for Android(이하 Android SDK) 사용 방법을 소개해보겠다.
(로그인 구현 부분을 바로 보고싶다면 [Android / Kotlin] SNS 로그인 api | Kakao (2) 를 보면 된다....ㅎ.ㅎ)


✅ 요구 사양

참고: 외부 라이브러리 의존성
Android SDK는 다음과 같은 외부 라이브러리를 사용합니다. Android SDK 설치 시, 해당 외부 라이브러리가 자동으로 설치된다.

  • Android SDK: Gson, Retrofit, OkHttp
  • ReactiveX Android SDK: RxJava2, Gson, Retrofit, OkHttp

✅ Gradle 설정

Android SDK를 적용할 프로젝트의 파일에 다음과 같이 Android SDK 레파지토리를 설정한다.
적용할 프로젝트 파일은 다음과 같이 구분한다.

  • build.gradle: Android Studio Artic Fox(최신) 외 버전
  • settings.gradle: Android Studio Artic Fox(최신) 버전

(나는 최신버전이므로 settings.gradle을 사용하였다.)

build.gradle(Project)

// 최신 Android Studio에서는 allprojects 사용 불가능
allprojects {    
    repositories {        
        google()        
        jcenter()        
        maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/'}    
    }
}

settings.gradle

dependencyResolutionManagement {    
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)    
        repositories {        
            google()        
            mavenCentral()        
            maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }    
    }
}

자세한 정보는 Dependency management in Gradle 참고


✅ 모듈 설정

Gradle 설정이 끝나면 build.gradle(Module) 파일에 필요한 모듈을 설정한다.
전체 모듈을 설치하거나 필요한 모듈만 선택해 설치할 수 있다.

dependencies {
  implementation "com.kakao.sdk:v2-all:2.12.0" // 전체 모듈 설치, 2.11.0 버전부터 지원
  implementation "com.kakao.sdk:v2-user:2.12.0" // 카카오 로그인
  implementation "com.kakao.sdk:v2-talk:2.12.0" // 친구, 메시지(카카오톡)
  implementation "com.kakao.sdk:v2-story:2.12.0" // 카카오스토리
  implementation "com.kakao.sdk:v2-share:2.12.0" // 메시지(카카오톡 공유)
  implementation "com.kakao.sdk:v2-navi:2.12.0" // 카카오내비
  implementation "com.kakao.sdk:v2-friend:2.12.0" // 카카오톡 소셜 피커, 리소스 번들 파일 포함
}


위 그림과 같이 필요한 부분만 설치하였다.


✅ 인터넷 권한 설정

카카오 API를 통해 카카오 서버와 통신하기 위해 앱에 인터넷 사용 권한을 설정해준다.
AndroidManifest.xml에 아래 코드를 작성해준다.

<!-- 인터넷 사용 권한 설정-->
<uses-permission android:name="android.permission.INTERNET" />


✅ 설정

개발자 사이트 > 로그인

먼저 카카오 개발자 사이트에서 로그인한 후, 내 애플리케이션 > 애플리케이션 추가하기를 눌러 앱을 생성할 수 있다.


내 어플리케이션 > 어플리케이션 추가하기

로그인이 완료 되었으면 내 어플리케이션에 들어가 어플리케이션을 추가해주어야 한다.

추가가 완료되면 요약 정보 탭에서 앱키라는 영역에 각각의 해당 키들이 발급된 것을 확인할 수 있다.


플랫폼 등록

요약 정보에서 왼쪽 탭을 보면 플랫폼 탭이 있다.
나는 Android에 적용할것이기 때문에 Android를 눌러주었다.

패키지명

  • Android 앱의 고유한 이름
  • AndroidManifest.xml 파일의 package 속성 값과 동일한 값을 입력

마켓 URL(Market URL)

  • 사용자가 카카오톡 공유나 메시지 API로 전송된 메시지의 링크를 통해 앱을 실행시킬 때, 사용자 기기에 해당 앱이 설치되어 있지 않을 경우 이동할 오픈마켓 주소
  • [구글 플레이] 선택 시 패키지명 기반으로 마켓 URL이 자동 입력
  • [직접 입력] 선택 시 전체 마켓 URL 값을 등록해야 한다.
  • [직접 입력] 선택 시, 구글 플레이 스토어 외에 원스토어 등의 마켓 URL도 등록할 수 있다.

키 해시

  • 개발 및 서비스 릴리즈 빌드를 위해 필요한 키 해시 값이다.
  • 카카오 API 요청 시 유효성 검증에 사용되며, 개발 환경별로 등록해야 한다.

✅ 키 해시 등록

키 해시는 디버그 키 해시(Debug key hash)와 릴리즈 키 해시(Release key hash) 두 가지가 있다.

  • 디버그 키 해시: 프로젝트를 처음 생성하거나 디버그할 때, 안드로이드 스튜디오에서 개발 환경에 맞게 자동으로 생성되는 디버그 인증서에서 해시(hash)한 값
  • 릴리즈 키 해시: 앱 스토어에 앱을 배포하기 위해 생성한 릴리즈 인증서로부터 해시한 값

키 해시를 구하는 방법은 여러가지가 있는데 다음 중 원하는 방법을 선택하여 디버그 키 해시와 릴리즈 키 해시 값을 구할 수 있다.
키 해시 등록 문서 보러가기!

1. 터미널에서 디버그, 릴리즈 키 해시 생성

터미널에서 키 해시를 생성하려면 키 해시를 관리하는 키툴(keytool)이 필요하다.
Windows의 경우, Windows 라이브러리를 위한 OpenSSL을 다운로드해야 합니다.

디버그 키 해시 / 릴리즈 키 해시 (Mac)

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

디버그 키 해시 / 릴리즈 키 해시 (Window)

keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64

디버그 키 해시를 생성해볼 예정이다.
터미널에 해당하는 명령어를 입력하면 아래와같이 뜬다.


2. Kakao SDK로 디버그, 릴리즈 키 해시 확인

Kakao SDK를 통해서도 키 해시 확인 가능하다. Utility에서 제공하는 편의 기능 중 getKeyHash() 함수를 사용하여 키 해시 값을 문자열(String)로 구할 수 있다.

var keyHash = Utility.getKeyHash(this)

3. Google Play Console 앱 서명으로 릴리즈 키 해시 확인

직접 릴리즈 키 해시를 생성하지 않고, Google Play Console에서 얻은 SHA-1 인증서 지문(SHA-1 certificate fingerprint)을 Base64로 인코딩하여 사용해야 한다.

자세한 내용은 google play console 키 해시 확인Play Console 고객센터 > 앱 서명 사용하기참고하세요.


다음과 같이 키 해시를 구해보았는데 이 키들을 어디에 입력을 해야되는가?

내 어플리케이션 > 앱 설정 > 플랫폼 > 키 해시 부분에 붙여넣어주면 된다!!


✅ 초기화

위의 사항들을 완료한 후 Android SDK를 사용하기 위해서는 가장 먼저 네이티브 앱 키로 초기화를 해야 한다.

네이티브 앱 키내 어플리케이션 > 앱 설정 > 플랫폼 에서 확인할 수 있다.

AndroidManifest.xmlapplication에도 Kakao SDK 초기화를 수행한 클래스의 이름을 설정해야 한다.
GlobalApplication 클래스에서 초기화를 했으므로 아래와 같이 동일한 이름을 설정에 추가 해준다.


지금까지 Kakao SDK for Android(이하 Android SDK) 사용법을 설명하였는데, 다음에는 로그인을 구현 방법에 대해 소개하겠다.
(혼자할때는 너무 간단해서 후딱 해버렸는데 역시 블로그 포스팅할땐 정성들여(?) 하다보니 시간이 오래 걸린다...... 나말고도 처음 접하는 사람들에게 도움이 되었으면 조켓다)

profile
공부가 조은 안드로이드 개발자

0개의 댓글