카카오 로그인
다음 방법을 따라 카카오 로그인을 구현합니다.
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
1. 애플리케이션 등록
1) 아래 페이지에 접속하여 로그인을 합니다.
카카오계정
accounts.kakao.com
2) 애플리케이션 추가하기 버튼을 클릭하여 다음 창을 채웁니다.
3) 애플리케이션 추가가 완료되면 앱 키를 얻을 수 있습니다.
4) 앱 설정 - 플랫폼 - Android 플랫폼 등록을 클릭하여 패키지명, 마켓 URL, 키 해시를 입력합니다.
여기서 키 해시는 다른 방법도 있지만 Kakao SDK를 이용하여 구할 수 있습니다.
import com.kakao.sdk.common.util.Utility
import android.util.Log
var keyHash = Utility.getKeyHash(this)
Log.d("Key Hash", keyHash)
5) 제품 설정 - 카카오 로그인에서 먼저 카카오 로그인을 활성화합니다.
6) 그 다음 제품 설정 - 카카오 로그인 - 동의항목에서 로그인 시 가져올 정보를 설정합니다.
2. 의존성 추가
먼저 settings.gradle에 다음과 같이 카카오 SDK가 배포되는 Maven 저장소를 추가합니다.
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {
url 'https://devrepo.kakao.com/nexus/content/groups/public/'
}
}
}
그 다음, 카카오 SDK를 사용하기 위해서 build.gradle에 Kakao SDK 라이브러리를 추가합니다.
implementation "com.kakao.sdk:v2-user:2.14.0"
3. Manifest에 API 키 지정
카카오 SDK를 사용하기 위해서 발급받은 앱 키를 Manifest 파일에 지정합니다.
<activity
android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Redirect URI: "kakao${NATIVE_APP_KEY}://oauth" -->
<data
android:host="oauth"
android:scheme="@string/KAKAO_NATIVE_APP_KEY" />
</intent-filter>
</activity>
4. 카카오 로그인과 로그아웃
1) Kakao SDK 객체를 초기화해줍니다.
KakaoSdk.init(this, getString(R.string.NATIVE_APP_KEY))
2) 카카오 로그인에는 두 가지 방법이 있습니다.
- 카카오톡으로 로그인 : loginWithKakaoTalk()
- 카카오계정으로 로그인 : loginWithKakaoAccount()
// 카카오 계정을 통한 로그인 콜백
private val callback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
if (error != null) {
// 로그인 실패
} else if (token != null) {
// 로그인 성공
}
}
// 카카오 로그인
binding.btnKakaoTalkLogin.setOnClickListener {
// 카카오톡 설치 확인
if (UserApiClient.instance.isKakaoTalkLoginAvailable(this)) {
// 카카오톡으로 로그인
UserApiClient.instance.loginWithKakaoTalk(this) { token, error ->
// 카카오톡 로그인 실패
if (error != null) {
// 사용자가 취소
if (error is ClientError && error.reason == ClientErrorCause.Cancelled) {
return@loginWithKakaoTalk
}
// 다른 이유로 오류 -> 카카오계정으로 로그인
UserApiClient.instance.loginWithKakaoAccount(this, callback = callback)
}
// 카카오톡 로그인 성공
else if (token != null) {
UserApiClient.instance.me { user, error ->
// 사용자 정보 요청 실패
if (error != null) {
error.printStackTrace()
}
// 사용자 정보 요청 성공
else if (user != null) {
checkKakaoUserData(user)
}
}
}
}
} else {
// 카카오계정으로 로그인
UserApiClient.instance.loginWithKakaoAccount(this, callback = callback)
}
}
3) 카카오 로그아웃은 다음과 같이 구현합니다.
// 카카오 로그아웃
fun kakaoLogout() {
UserApiClient.instance.logout { error ->
if (error != null) {
// 로그아웃 실패
} else {
// 로그아웃 성공
}
}
}
728x90
반응형
'안드로이드 > 활용' 카테고리의 다른 글
[Android] ExoPlayer 사용하기 (0) | 2023.10.05 |
---|---|
[Android] Cloud Firestore와 Cloud Storage 사용하기 (0) | 2023.09.29 |
[Android] Moshi로 JSON 파싱하기 (0) | 2023.09.14 |
[Android] 구글 지도 사용하기 (0) | 2023.09.14 |
[Android] 네이버 지도 사용하기 (0) | 2023.09.13 |