Android

[안드로이드 - 코틀린] 카카오 로그인 구현(1)

내가갈게하와이 2022. 1. 27. 00:30

※이 구현은 카카오 SDK v2 버전을 사용하고 있다.

 

프로젝트에 FCM(Firebase 클라우드 메시징)을 사용하려면 프로젝트 이름에 example이라는 글자는 들어가면 안된다.

프로젝트명은 com.이름.app 형태를 갖추고 있을 것이다. 확인해보고 변경하도록 하자.

 

시작하기 앞서 카카오 developers에 자신의 앱을 등록해야한다. (아래 링크 접속)

https://developers.kakao.com/

 

Kakao Developers

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

developers.kakao.com

사이트에 들어가서 내 애플리케이션 을 클릭한다.

애플리케이션 추가하기를 클릭하여 새롭게 추가를 해준다.

아래의 화면의 화면이 나오게 된다. 앱 아이콘은 배포할 것이 아니라면 넣지 않아도 된다. 

앱 이름은 원하는 이름으로 만들고, 사업자명에는 본인의 이름을 써주도록하자. 

저장을 하게되면 아래와 같은 화면을 볼 수 있을 것이다. 

요약정보에 들어가보면 앱키를 볼 수 있는데 네이티브 앱 키를 복사하여 안드로이드 프로젝트에 넣어줄 것이다. 

네이티브 앱키res/values/string.xml에 추가한다. 

<resources>
    <string name="app_name">AppName</string>
    <string name="kakao_app_key">여기에 네이티브 앱키 삽입</string> 
</resources>

카카오 로그인을 활성화 시켜준다.

메뉴에서 플랫폼으로 들어간다. 그리고 Android 플랫폼 등록을 클릭한다. 

그러면 아래의 화면을 볼 수 있을 것이다.

패키지명에는 com.프로젝트이름.app 형태의 문자열을 넣어주면 된다. 이 문자열은 manifest, 코틀린 파일의 최상단을 보면 나와있다.  패키지 명을 넣으면 마켓 URL은 자동 작성이 되니 넘어가도 된다. 

마지막으로 해시 키를 넣어줘야한다. 

 

안드로이드 프로젝트로 돌아와서 아무 액티비티(코틀린 파일)에 Log 메시지를 통해 구한다. 빌드를 한다.

package com.cookandroid.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.kakao.sdk.common.util.Utility

class hash : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_hash)

        val keyHash = Utility.getKeyHash(this)
        Log.e("해시키", keyHash)
    }
}

안드로이드 맨 하단에 Logcat을 누르면

이렇게 Hash 값을 찾을 수 있다. 복사하여 Android 플랫폼 등록에 붙여넣자(sdfs/sdfs/sdf= 이러한 형태를 가지고 있다).

이렇게 하면 카카오 developers 등록 작업은 다 끝난 셈이다. 

이제 안드로이드 프로젝트에서 구현을 해보자.

 

프로젝트에 의존성 문구들을 복붙하고 가자.

맨 처음에 gradle(Module)단에서 아래의 문구로 버전이 되어있는지 확인하고 아니라면 아래의 코드를 넣어준다.

  compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }

그리고 dependencies에 카카오 로그인을 쓰기 위한 의존성 문구를 넣는다.

implementation "com.kakao.sdk:v2-user:2.0.1"//카카오 로그인

그리고 Sync now 를 눌러주는 걸 까먹지 말자.

 

manifest에 인터넷 퍼미션을 넣어주자.

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

GlobalApplication이라는 Application을 상속한 클래스를 만들어준다.

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 클래스가 사용될 수 있도록 manifest에 추가해준다.

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

초기화를 해야하니 가장 먼저 실행되도록 맨 처음에 넣어주자.

포스팅 내용이 너무 길어지기 때문에 다음 포스트로 다시 돌아오겠다.