-
[Android] 카카오 로그인 v2 API with kotlin - 2Android 2020. 12. 24. 16:05반응형
[Android] 카카오 로그인 v2 API with kotlin - 1
카카오 로그인을 공부하면서 사용하는 방법을 정리 해볼까 합니다. 일단 카카오 내어플리케이션에 들어가서 앱을 등록 해줘야합니다. 앱 아이콘에는 앱에 사용할 아이콘 이미지를 넣어 주시면
omod.tistory.com
로그인 구현 부분 입니다.
class LoginActivity : BaseActivity<ActivityLoginBinding>(R.layout.activity_login) { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val callback: (OAuthToken?, Throwable?) -> Unit = { token, error -> if (error != null) { loginErrorCode(error) } else if (token != null) { UserApiClient.instance.me { user, error -> if (error != null) { Log.e(error.toString(), "사용자 정보 요청 실패") } else { /* 로그인 성공시 작업 부분 */ // 카카오 토큰 val userToken = token.accessToken // 카카오 id val userId = user?.id.toString() // 카카오 이메일 val userEmail = user?.kakaoAccount?.email.toString() // 카카오 닉네임 val userNickname = user?.kakaoAccount?.profile?.nickname.toString() ) } } } } // 카카오 로그인 버튼 binding.btLoginKakao.setOnClickListener { // 카카오 앱이 있는지 판별 if (LoginClient.instance.isKakaoTalkLoginAvailable(this)) { // 있는 경우 앱을 사용하여 로그인 LoginClient.instance.loginWithKakaoTalk(this, callback = callback) } else { // 없을 경우 웹 페이지를 띄움 LoginClient.instance.loginWithKakaoAccount(this, callback = callback) } } } // 에러 코드별 toast private fun loginErrorCode(error: Throwable) { when { error.toString() == AuthErrorCause.AccessDenied.toString() -> { Toast.makeText(this, "접근이 거부 됨(동의 취소)", Toast.LENGTH_SHORT).show() } error.toString() == AuthErrorCause.InvalidClient.toString() -> { Toast.makeText(this, "유효하지 않은 앱", Toast.LENGTH_SHORT).show() } error.toString() == AuthErrorCause.InvalidGrant.toString() -> { Toast.makeText(this, "인증 수단이 유효하지 않아 인증할 수 없는 상태", Toast.LENGTH_SHORT).show() } error.toString() == AuthErrorCause.InvalidRequest.toString() -> { Toast.makeText(this, "요청 파라미터 오류", Toast.LENGTH_SHORT).show() } error.toString() == AuthErrorCause.InvalidScope.toString() -> { Toast.makeText(this, "유효하지 않은 scope ID", Toast.LENGTH_SHORT).show() } error.toString() == AuthErrorCause.Misconfigured.toString() -> { Toast.makeText(this, "설정이 올바르지 않음(android key hash)", Toast.LENGTH_SHORT).show() } error.toString() == AuthErrorCause.ServerError.toString() -> { Toast.makeText(this, "서버 내부 에러", Toast.LENGTH_SHORT).show() } error.toString() == AuthErrorCause.Unauthorized.toString() -> { Toast.makeText(this, "앱이 요청 권한이 없음", Toast.LENGTH_SHORT).show() } else -> { // Unknown Toast.makeText(this, "$error", Toast.LENGTH_SHORT).show() } } } }
카카오 연결을 끊는 방법입니다.
UserApiClient.instance.unlink { error -> if (error != null) { Log.e("Logout", "연결 끊기 실패", error) } else { // 연결 끊기 성공 한뒤 작업 부분 } }
반응형'Android' 카테고리의 다른 글
설계 원칙 - SOLID (0) 2021.03.30 Android App Bundle이 서명되지 않았습니다 (0) 2021.01.14 [Android] TextView 부분 글자 바꾸기 (Span) (0) 2020.12.14 Retrofit2 + RxJava 에서 Header 가져오기 (0) 2020.12.06 [Android] 파일 공유 대응 방법(File Provider) (0) 2020.11.13