일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- jvm이란
- rxjava disposable
- 객체
- 안드로이드 유닛테스트란
- 큐 자바 코드
- 플러터 설치 2022
- 자바 다형성
- 서비스 vs 쓰레드
- 스택 자바 코드
- 안드로이드 라이선스
- 2022 플러터 설치
- 클래스
- 안드로이드 라이선스 종류
- 서비스 쓰레드 차이
- 안드로이드 레트로핏 crud
- 안드로이드 유닛 테스트 예시
- 멤버변수
- android retrofit login
- 안드로이드 os 구조
- jvm 작동 원리
- 2022 플러터 안드로이드 스튜디오
- rxjava cold observable
- 스택 큐 차이
- 안드로이드 레트로핏 사용법
- rxjava hot observable
- android ar 개발
- ar vr 차이
- ANR이란
- Rxjava Observable
- 안드로이드 유닛 테스트
- Today
- Total
나만을 위한 블로그
[Android] 카카오 로그인 구현하기 (2024 ver) 본문
코틀린으로 카카오 로그인을 구현하는 방법을 다룬 적이 있는데, 사이드 프로젝트에 카카오 로그인을 추가하면서 확인해 보니 여러가지 바뀐 점이 있어 다시 작성한다. 3년 전에 쓴 글이라 더 이상 유용하지 않아서 다시 작성하려는 것도 있다.
해시키를 구하기까지의 과정은 이전 포스팅과 동일하다.
https://onlyfor-me-blog.tistory.com/296
app gradle에 카카오 로그인 의존성을 추가해야 한다. 아래 링크에서 확인할 수 있다.
https://developers.kakao.com/docs/latest/ko/android/getting-started#apply-sdk-select-module
오늘 기준으로 최신 의존성은 아래와 같다. 자신의 프로젝트에 맞춰서 추가한다.
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
'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 |