카카오 로그인
다음 방법을 따라 카카오 로그인을 구현합니다.
1. 애플리케이션 등록
1) 아래 페이지에 접속하여 로그인을 합니다.
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 |