일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 안드로이드 레트로핏 crud
- 서비스 쓰레드 차이
- ANR이란
- 클래스
- 객체
- 안드로이드 유닛 테스트
- Rxjava Observable
- ar vr 차이
- 2022 플러터 안드로이드 스튜디오
- 서비스 vs 쓰레드
- 2022 플러터 설치
- jvm이란
- rxjava disposable
- 스택 큐 차이
- 플러터 설치 2022
- 안드로이드 레트로핏 사용법
- 멤버변수
- 안드로이드 라이선스 종류
- 자바 다형성
- 안드로이드 유닛 테스트 예시
- 안드로이드 유닛테스트란
- android ar 개발
- jvm 작동 원리
- 스택 자바 코드
- rxjava cold observable
- 큐 자바 코드
- 안드로이드 os 구조
- android retrofit login
- 안드로이드 라이선스
- rxjava hot observable
- Today
- Total
나만을 위한 블로그
[Android] 카카오 로그인 구현하기 (2024 ver) 본문
코틀린으로 카카오 로그인을 구현하는 방법을 다룬 적이 있는데, 사이드 프로젝트에 카카오 로그인을 추가하면서 확인해 보니 여러가지 바뀐 점이 있어 다시 작성한다. 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
'Android' 카테고리의 다른 글
[Android] 안드로이드 생태계 및 안드로이드 15 변경사항 (0) | 2024.05.20 |
---|---|
[Android] stateIn이란? (0) | 2024.05.17 |
[Android] 앱 아키텍처 - UI 이벤트 (0) | 2024.05.14 |
[Android] 앱 아키텍처 - 데이터 레이어란? (0) | 2024.05.12 |
[Android] 앱 아키텍처 - 도메인 레이어란? (0) | 2024.05.12 |