본문 바로가기
안드로이드 프로그래밍

[Kotlin] 카카오 로그인 SDK V2 사용해보기 - 1

by Loyal 2020. 8. 25.
반응형

이번에 카카오 SDK가 V2로 업데이트 되었다.

불과 2주 전에 SDK V1을 사용하여 카카오 로그인을 구현했었는데 개발자 문서보다 블로그를 보고 따라하는 것이

더 상세한 설명과 쉬운 난이도를 가진 것을 보고서 '이럴바에는 내가 구현해보고 튜토리얼을 남기는게 낫겠다' 싶었다.

 

https://developers.kakao.com/

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

우선, 안드로이드 SDK를 사용하기 위한 요구사항이 있다.

  • Java 8 이상
  • API 19: Android 4.4(KitKat) 이상
  • Android Studio 3.0.0 이상

1. 프로젝트 생성

프로젝트 생성

카카오 API 문서에서도 SDK V2부터는 코틀린을 기본 언어로 사용하고 있다.

난 API를 21로 설정했다. 기본 설정이 API 16부터 되어있는 사람들이 꽤 있을텐데

이 부분은 꼭 위의 요구사항인 최소 API 19 이상으로 프로젝트를 생성하길 바란다.

 

2. Project 레벨의 Gradle 설정

아래 코드를 프로젝트 레벨의 gradle에 아래 사진과 같이 넣고 위의 'Sync Now' 버튼을 누른다.

'Sync Now' 버튼의 경우 하나 추가하고 한 번 눌러주는 게 좋다. 한 번에 여러 개 추가했다가 꼬이면 골치 아파진다.

maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }

build.gradle(Project)

3. Module 레벨의 Gradle 설정

위의 요구사항에서 언급했듯이 Java 8 이상을 사용해야 하기 때문에 이에 대한 설정도 해주어야한다.

android { ... } 내부에 넣어주면 된다.

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

kotlinOptions {
    jvmTarget = "1.8"
}

build.gradle(Module)

4. AndroidManifest.xml 설정

로그인 기능을 사용하기 위해서는 당연히 인터넷과 통신을 해야하기 때문에 인터넷에 대한 사용 권한이 필요하다.

<uses-permission android:name="android.permission.INTERNET" />

AndroidManifest.xml

5. Module 레벨의 Gradle 설정

아까 설정한 것에 추가로 dependency에 넣어줄 것이 있다. 로그인에 필요한 모듈인데, 카카오에서 제공하는 모듈은

user, talk, story, link, navi가 있다.

  • user: 로그인, 사용자 관리
  • talk: 친구, 메시지
  • story: 카카오스토리
  • link: 메시지(카카오링크)
  • navi: 카카오내비

우리는 로그인 기능만 구현하면 되니 user 모듈만 넣어주자.

implementation "com.kakao.sdk:v2-user:2.0.1"

build.gradle(Module)

6. 키 해시 구하기

키 해시에는 '디버그 키'와 '릴리즈 키'가 있다.

디버그 키

  • 개발 환경에 따라 다른 키
  • 개발자가 여러 명이라면 여러 개의 디버그 키가 있으므로 모두 다 등록 필요

릴리즈 키

  • 앱 개발이 완료 된 후, 배포를 위한 키

우리는 디버그 키를 구하면 되는데, 여기에도 2가지 방법이 있다.

  • cmd에서 keytool을 이용하는 방법
keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64

이 방법은 설치해야하는 프로그램도 있어 귀찮으니, 릴리즈 키를 구해야하는 경우에만 사용하고 카카오에서 지원하는

함수를 사용하도록 하자.

  • 카카오에서 지원하는 함수
import com.kakao.sdk.common.util.Utility

val keyHash = Utility.getKeyHash(this)
Log.d("Hash", keyHash)

MainActivity

위의 코드를 구역에 맞게 붙여넣고 AVD나 핸드폰을 연결해서 앱을 실행시켜준다.

그럼 화면 하단의 로그캣에 키 해시가 찍힐 것이다.

Logcat 화면

만약 로그가 너무 많아서 보기 불편하다면 tag로 Hash를 지정해뒀으니 검색창에 Hash를 입력하면 해당 값이 뜰 것이다.

이제 이 값을 복사해두자.

이제 이 함수는 릴리즈 키를 구할 때 까지는 쓸 일이 없으니 지우거나 주석 처리를 해두면 된다.

 

7. Kakao Developers에 애플리케이션, 키 해시 추가하기

https://developers.kakao.com/ 에 접속해보자.

자신의 카카오 계정으로 로그인을 한 뒤 '내 애플리케이션' 탭에 가서 '애플리케이션 추가하기' 버튼을 눌러보자.

애플리케이션 추가하기

아이콘은 필수요소가 아니라서 그냥 '저장' 버튼을 눌러서 넘어갔다.

생성이 완료되었다면 아래와 비슷한 화면이 뜰텐데, '플랫폼' 카테고리로 가서 'Android 플랫폼 등록' 버튼을 누르자.

애플리케이션 설정화면

그러면 아래와 같은 화면이 뜰텐데 패키지명에는 본인이 생성한 패키지명에 맞게 입력해주면 된다.

패캐지명은 코드 부분에 다 있으니 저기서 복붙하자. 만약 이걸 틀리게 입력한다면 나중에 오류가 발생해서

카카오 로그인 기능이 작동하지 않는 일이 벌어지니 맞게 등록해두자.

키 해시 부분은 위에서 구한 값을 그대로 복붙하고 저장하면 된다.

패키지명 확인
Android 플랫폼 등록

 

8. GlobalApplication 생성

Kakao SDK를 사용하기 위해서 Native App Key로 초기화를 해야한다.

아래 사진과 같은 새로운 코틀린 Class를 생성한다.

GlobalApplication 생성

생성하면 아무런 코드가 없는 빈 클래스일 것이다. Application을 상속시켜주고 onCreate 함수를 오버라이드해서

그 안에서 초기화를 해주어야 한다.

import android.app.Application
import com.kakao.sdk.common.KakaoSdk

class GlobalApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        KakaoSdk.init(this, "여기에 NATIVE APP KEY 복붙")
    }
}

GlobalApplication

Native App Key는 '요약 정보' 탭에서 확인할 수 있다.

 

9. AndroidManifest.xml 설정

GlobalApplication을 생성만 한다고 해서 끝이 아니다. Manifest에 등록해서 GlobalApplication 클래스가 사용될 수

있도록 해주어야 한다.

android:name은 애플리케이션 프로세스가 시작될 때, 애플리케이션의 다른 컴포넌트보다 먼저 실행된다고 한다.

초기화를 해야하니 가장 먼저 실행되야하는듯.

application 태그 안에 넣어주면 된다.

android:name=".GlobalApplication"

AndroidManifest.xml

여기까지가 카카오 로그인을 하기 위한 기본 설정 단계이다. 다음부터는 v1과는 약간 다른 내용이 있을 것이다.

다음 글에서는 카카오 로그인 api를 사용해서 로그인 과정을 구현해볼 것이다.

반응형