관리 메뉴

나만을 위한 블로그

[Android] 카카오 로그인 구현하기 (2024 ver) 본문

Android

[Android] 카카오 로그인 구현하기 (2024 ver)

참깨빵위에참깨빵 2024. 5. 16. 17:23
728x90
반응형

코틀린으로 카카오 로그인을 구현하는 방법을 다룬 적이 있는데, 사이드 프로젝트에 카카오 로그인을 추가하면서 확인해 보니 여러가지 바뀐 점이 있어 다시 작성한다. 3년 전에 쓴 글이라 더 이상 유용하지 않아서 다시 작성하려는 것도 있다.

해시키를 구하기까지의 과정은 이전 포스팅과 동일하다.

 

https://onlyfor-me-blog.tistory.com/296

 

[Android] 코틀린으로 카카오 로그인 구현하기

※ 이 포스팅에서 다루는 카카오 SDK는 v2 버전이다. 이번 포스팅에선 코틀린으로 카카오 로그인을 어떻게 구현하는지에 대해 포스팅하려고 한다. 주의할 것은 프로젝트에 FCM까지 붙일 거라면

onlyfor-me-blog.tistory.com

 

app gradle에 카카오 로그인 의존성을 추가해야 한다. 아래 링크에서 확인할 수 있다.

 

https://developers.kakao.com/docs/latest/ko/android/getting-started#apply-sdk-select-module

 

Kakao Developers

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

developers.kakao.com

 

오늘 기준으로 최신 의존성은 아래와 같다. 자신의 프로젝트에 맞춰서 추가한다.

 

dependencies {
  implementation "com.kakao.sdk:v2-all:2.20.1" // 전체 모듈 설치, 2.11.0 버전부터 지원
  implementation "com.kakao.sdk:v2-user:2.20.1" // 카카오 로그인 API 모듈
  implementation "com.kakao.sdk:v2-share:2.20.1" // 카카오톡 공유 API 모듈
  implementation "com.kakao.sdk:v2-talk:2.20.1" // 카카오톡 채널, 카카오톡 소셜, 카카오톡 메시지 API 모듈
  implementation "com.kakao.sdk:v2-friend:2.20.1" // 피커 API 모듈
  implementation "com.kakao.sdk:v2-navi:2.20.1" // 카카오내비 API 모듈
  implementation "com.kakao.sdk:v2-cert:2.20.1" // 카카오톡 인증 서비스 API 모듈
}

 

그리고 settings.gradle.kts 파일에 한 줄 추가하는 부분이 있는데, 아래와 같이 수정하라고 한다.

 

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

 

그러나 이렇게 하니 "Could not get unknown property 'java' for object of type ~~" 에러가 발생했다.

이 에러가 발생하면 아래와 같이 등호 옆에 곧바로 url을 넣으면 된다.

 

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

 

이제 Application에 한 줄을 추가한다.

 

import android.app.Application
import com.kakao.sdk.common.KakaoSdk
import com.example.myapp.BuildConfig
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class App: Application() {
    override fun onCreate() {
        super.onCreate()

        KakaoSdk.init(this, BuildConfig.KAKAO_NATIVE_KEY) // 추가
    }
}

 

hilt를 사용하고 local.properties에 카카오 디벨로퍼에서 확인한 네이티브 키를 추가했기 때문에 이런 형태임을 참고한다.

이제 카카오 로그인 함수를 추가한다. 곧 리팩토링할 예정이지만 일단 카카오 로그인 관련 함수들을 담아둘 클래스를 만들고 hilt를 적용했다. hilt를 사용하지 않는다면 hilt 키워드만 제거하면 된다.

 

import android.content.Context
import com.kakao.sdk.user.UserApiClient
import javax.inject.Inject

class KakaoAuthClient @Inject constructor() {
    fun loginWithKakaoTalk(
        context: Context,
        onSuccess: (String) -> Unit,
        onFailure: (Throwable) -> Unit,
    ) {
        UserApiClient.instance.loginWithKakaoTalk(context) { token, error ->
            if (error != null) {
                onFailure(error)
            } else if (token != null) {
                onSuccess(token.accessToken)
            }
        }
    }
}

 

남은 건 클릭 리스너 안에 위 함수를 넣어서 유저가 버튼을 탭하면 카카오 로그인을 할 수 있도록 하는 것 뿐이다.

 

clKakaoLogin.setOnClickListener {
    kakaoAuthClient.loginWithKakaoTalk(
        context = this@LoginActivity,
        onSuccess = { token ->
            Logger.e("## 카카오 로그인 성공. 토큰 : $token")
            startActivity(Intent(this@LoginActivity, MainActivity::class.java))
            finish()
        },
        onFailure = { error ->
            Logger.e("## 카카오 로그인 실패 : $error ")
        }
    )
}

 

카카오계정으로 로그인 기능을 원한다면 loginWithKakaoAccount()를 구현하면 된다.

그 외는 카카오 공식문서와 구글링으로 충분히 해결할 수 있을 것이다.

 

참고한 사이트)

 

https://developers.kakao.com/docs/latest/ko/kakaologin/android#login-with-kakaoaccount

 

Kakao Developers

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

developers.kakao.com

 

반응형
Comments