[Android/안드로이드] Java 카카오 로그인 연동하기 - SDK V2

Jiwon An·2021년 8월 9일
0

Android

목록 보기
1/1

❗️ 이 블로그로 이전하기 전에 작성한 글입니다.

크게 4단계로 나눌 수 있다.

  1. Kakao Developers 설정
  2. 개발 환경 설정
  3. 초기화 및 로그인 구현하기

안드로이드 코드 참고 >> GitHub

1. 기본 설정 Kakao Developers 설정

구현하기에 앞서 필요한 몇 가지 과정을 해야한다.

  1. 내 애플리케이션 등록
  2. 카카오 로그인 설정
  3. Android 플랫폼 설정

1. 내 애플리케이션 등록

링크로 들어가서 애플리케이션 추가하기 를 클릭합니다.

  • 앱 이름과 사업자명은 필수로 등록하셔야 진행됩니다.

2. 카카오 로그인 설정

1) 카카오 로그인 활성화

내 애플리케이션 > 제품 설정 > 카카오 로그인 으로 이동합니다.

카카오 로그인을 활성화시킵니다.

Redirect URI가 등록되어 있지 않으면 카카오 로그인 시 에러가 나므로 임의로 설정해줍니다.

2개가 전부 설정되었다면, 아래처럼 표시가 됩니다.

2) 동의항목 설정

내 애플리케이션 > 제품 설정 > 카카오 로그인 > 동의항목 으로 이동합니다.

카카오 로그인 구현 시에 카카오 서비스에 등록할 사용자의 정보를 가지고 올 수 있습니다.
ex) 프로필 정보, 성별, 이메일

이번 경우엔 프로필 정보를 필수동의, 이메일을 선택동의로 설정하겠습니다.

이메일은 비즈 앱인 경우에만 필수 동의가 가능합니다.

2-1) 만약, 이메일을 필수동의로 하고 싶다면,

내 애플리케이션 > 앱 설정 > 비즈니스 로 이동합니다.

앱 아이콘을 등록합니다.

사업자 정보를 등록합니다.

정상적으로 등록하셨다면, 아래처럼 표시됩니다.

3. Android 플랫폼 설정

내 애플리케이션 > 앱 설정 > 플랫폼 으로 이동합니다.

GitHub 코드 기준으로 설명하겠습니다.

Android 플랫폼 등록을 클릭합니다.

1) 패키지명을 입력합니다.

AndroidManifest.xml 의 package 를 참고합니다.

2) 키 해시를 입력합니다.

MainActivity.javagetKeyHash() 메서드를 사용해 키해시를 얻습니다.

Logcat에서 확인한 값을 키 해시에 입력합니다.

브라우저로 돌아가 아래처럼 입력합니다.

정상적으로 입력되었다면, 아래처럼 표시됩니다.

2. 개발 환경 설정

  1. 필요한 모듈 설치
  2. 인터넷 사용 권한 설정하기
  3. Java8 사용설정하기

1. 필요한 모듈 설치

Android SDK를 사용하기 위한 최소 요구사양

  • API 19: Android 4.4(KitKat) 이상
  • Java 8 이상
  • Android Studio 3.6.1 이상

1) Gradle 설정하기

build.gradle(Project) 파일에 다음과 같이 Android SDK 레파지토리(Repository)를 설정합니다.

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

2) 필요한 모듈 설정하기

build.gradle(Module) 파일에 필요한 모듈을 설치합니다.

dependencies {
  implementation "com.kakao.sdk:v2-user:2.4.2" // 카카오 로그인
  implementation "com.kakao.sdk:v2-talk:2.4.2" // 친구, 메시지(카카오톡)
  implementation "com.kakao.sdk:v2-story:2.4.2" // 카카오스토리
  implementation "com.kakao.sdk:v2-link:2.4.2" // 메시지(카카오링크)
  implementation "com.kakao.sdk:v2-navi:2.4.2" // 카카오내비
}

여기선 카카오 로그인만 필요하기 때문에 첫번째 줄만 설치합니다.

2. 인터넷 사용 권한 설정하기

AndroidManifest.xml 파일에 다음과 같이 인터넷 사용 권한을 설정해줍니다.

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

    <!-- 인터넷 사용 권한 설정-->
    <uses-permission android:name="android.permission.INTERNET" />
    ...

3. Java8 사용설정하기

// Java 8 사용을 위한 build.gradle 설정
android {

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    
}

3. 초기화 및 로그인/로그아웃 구현하기

1. 초기화 코드

Android SDK를 사용하기 위해선 가장 먼저 네이티브 앱 키로 초기화를 해야 합니다.
GlobalApplication.java 에 초기화 코드를 추가해줍니다.

public class GlobalApplication extends Application {
    private static GlobalApplication instance;

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;

        // 네이티브 앱 키로 초기화
        KakaoSdk.init(this, {KAKAO_NATIVE_APP_KEY});
    }
}

AndroidManifest.xmlapplication에도 Kakao SDK 초기화를 수행한 클래스의 이름을 설정해야 합니다.

이 예제에선 GlobalApplication.java 클래스에서 초기화를 했으므로 아래와 같이 추가해줍니다.

 <application
    <!-- android:name 설정 -->
    android:name=".GlobalApplication"
    ...
 >

2. Redirect URI 에 접근하기 위한 Activity 생성

AndroidManifest.xml 에서 Activity를 설정해줍니다.

Android SDK에서 host 값은 "oauth" 로 고정입니다.

<activity android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity">
  <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="{KAKAO_APP_KEY}"/>
  </intent-filter>
</activity>

3. 로그인 코드

// 로그인 공통 callback 구성
UserApiClient.getInstance().loginWithKakaoTalk(MainActivity.this,(oAuthToken, error) -> {
  if (error != null) {
    Log.e(TAG, "로그인 실패", error);
  } else if (oAuthToken != null) {
    Log.i(TAG, "로그인 성공(토큰) : " + oAuthToken.getAccessToken());
  }
});

4. 로그아웃 코드

UserApiClient.getInstance().logout(error -> {
  if (error != null) {
    Log.e(TAG, "로그아웃 실패, SDK에서 토큰 삭제됨", error);
  }else{
    Log.e(TAG, "로그아웃 성공, SDK에서 토큰 삭제됨");
  }
});

5. 사용자 정보 가져오기

여기선 회원번호와 이메일만 가져오도록 하겠습니다.

UserApiClient.getInstance().me((user, meError) -> {
  if (meError != null) {
    Log.e(TAG, "사용자 정보 요청 실패", meError);
  } else {
    Log.i(TAG, "사용자 정보 요청 성공" +
               "\n회원번호: "+user.getId() +
               "\n이메일: "+user.getKakaoAccount().getEmail());
  }
});

6. 레이아웃

여기로 들어가서 원하는 크기로 다운로드 받아 사용하면 됩니다.


참고

  • developers.kakao.com/docs/latest/ko/kakaologin/prerequisite#redirect-uri
  • developers.kakao.com/docs/latest/ko/kakaologin/android
profile
🚀 백엔드 2년차 개발자입니다 🚀 성장의 즐거움으로 아자자자!🤣

0개의 댓글