[Android/Kotlin] 카카오 로그인 API (Kakao Login API)

장똑대·2021년 9월 10일
0

1) 내 애플리케이션 추가하기

1-1) kakao developers에 내 애플리케이션을 새로 추가

1-2) 새 애플리케이션 > 제품설정 > 카카오로그인 > 활성화 설정

1-3) (생략가능) 제품설정 > 카카오로그인 > 동의항목

  • 닉네임, 프로필사진, 이메일 불러오기까지 연습할예정이라 동의항목까지 설정해 주었다. 단순 로그인만 구현할 예정이라면 이 단계는 생략해도 괜춘!

1-4) 앱설정 > 앱키

  • 네이티브 앱키는 여기서 확인 가능하다


2) 모듈 설정하기

2-1) Gradle 설정

  • gradle 파일에 KakaoSDK 레파지토리 를 설정해준다
    maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }

📄 build.gradle(Project)

repositories {
        ...
        maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
    }

📄 setting.gradle(Project Settings)

dependencyResolutionManagement {    
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)    
        repositories {        
            google()        
            mavenCentral()        
            maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }    
    }
}

2-2) 필요한 모듈 설정

  • dependencies 추가

📄 build.gradle(Module)

dependencies {
  implementation "com.kakao.sdk:v2-user:2.7.0" // 카카오 로그인
}

2-3) 인터넷 권한 설정

<uses-permission android:name="android.permission.INTERNET" />

📄 AndroidMenifests.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.finalproject">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:name=".GlobalApplication"

2-4) 초기화

  • 네이티브 앱키는 strings에 추가하지 않고 init에 직접 입력해 주어도 된다.
  • KakaoSdk.init을 MainActivity 에서 진행해줘도 되는것 같은데, 걍 공식문서대로 GlobalApplication 클래스를 새로 생성해 주었다.
  • 난 사실,, 네이티브 앱키가 유출되는걸 방지하기 위해 app_key.xml을 새로 만들어 거기에 등록하고 .gitignore에 등록해주었다,,

📄 res/values/strings.xml

<resources>
    <!-- kakao_native_app_key는 네이티브 앱키가 '12345'라면 'kakao12345'로 설정 -->
    <string name="kakao_native_app_key">kakao 1.4단계 참고하여 네이티브 앱키 입력</string>
    <!-- 얘는 그냥 네이티브 앱키 그대로 입력하면 된다 -->
    <string name="kakao_app_key">1.4단계 참고하여 네이티브 앱키 입력</string>
</resources>

📄 GlobalApplication.kt

class GlobalApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        // 다른 초기화 코드들

        // Kakao SDK 초기화 kakao_native_app_key 아닙니다!! 잘 봐주셔야해욤
        KakaoSdk.init(this, getString(R.string.kakao_app_key))
    }
}

📄 AndroidMenifests.xml

android:name=".GlobalApplication"

<application
    android:name=".GlobalApplication"
    ...
>

3) 카카오 로그인

3-1) Redirect URI 설정

📄 AndroidMenifests.xml

<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" />
                    <!--2-4 단계에서 strings.xml에 태그를 굳이 두개로 나눈 이유!
                        strings에 등록하지 않은 경우 
                        네이티브 앱키가 '123456'이라면 
                        android:scheme="kakao123456"으로 입력 -->
            </intent-filter>
        </activity>

3-2) 카카오 로그인(카카오톡 어플연결 X, 카카오계정 로그인)

  • 로그인 성공시 사용자 정보 조회하기
  • UserApiClient.instance.me~ 이부분은 1-3 단계에서 동의항목을 설정해 주어야 불러와줌! 1-3 단계를 생략했다면 코드도 생략해주기
UserApiClient.instance.loginWithKakaoAccount(context) { token, error ->
    if (error != null) {
        Log.e(TAG, "로그인 실패", error)
    }
    else if (token != null) {
        Log.i(TAG, "로그인 성공 ${token.accessToken}")
        
        UserApiClient.instance.me { user, error ->
        	if (error != null) {
            		Log.e("카카오로그인", "사용자 정보 요청 실패", error)
            	} else if (user != null) {
            		Log.i( "카카오로그인", "사용자 정보 요청 성공" +
                    		"\n회원번호: ${user.id}" +
                            	"\n이메일: ${user.kakaoAccount?.email}" +
                            	"\n닉네임: ${user.kakaoAccount?.profile?.nickname}" +
                            	"\n프로필사진: ${user.kakaoAccount?.profile?.thumbnailImageUrl}"
                            )
    }
}

공식문서

  • 우선 공식문서를 따라해보시고 막히는 부분만 참고하시길 추천드려요!
profile
장똑대와 안드로이드

2개의 댓글

comment-user-thumbnail
2021년 12월 2일

Kakao SDK 초기화 kakao_native_app_key 아닙니다!! 잘 봐주셔야해욤
KakaoSdk.init(this, getString(R.string.kakao_app_key))

여기서 저 kakao_app_key 부분에 제 애플리케이션 네이티브 앱 키를 직접 입력하는 게 아니라 제대로 그냥 저대로 넣는 건가요?? (수정않고??)

1개의 답글