크게 4단계로 나눌 수 있다.
- Kakao Developers 설정
- 개발 환경 설정
- 초기화 및 로그인 구현하기
안드로이드 코드 참고 >> GitHub
구현하기에 앞서 필요한 몇 가지 과정을 해야한다.
- 내 애플리케이션 등록
- 카카오 로그인 설정
- Android 플랫폼 설정
이 링크로 들어가서 애플리케이션 추가하기
를 클릭합니다.
내 애플리케이션 > 제품 설정 > 카카오 로그인
으로 이동합니다.
카카오 로그인을 활성화시킵니다.
Redirect URI가 등록되어 있지 않으면 카카오 로그인 시 에러가 나므로 임의로 설정해줍니다.
2개가 전부 설정되었다면, 아래처럼 표시가 됩니다.
내 애플리케이션 > 제품 설정 > 카카오 로그인 > 동의항목
으로 이동합니다.
카카오 로그인 구현 시에 카카오 서비스에 등록할 사용자의 정보를 가지고 올 수 있습니다.
ex) 프로필 정보, 성별, 이메일
이번 경우엔 프로필 정보를 필수동의, 이메일을 선택동의로 설정하겠습니다.
이메일은 비즈 앱인 경우에만 필수 동의가 가능합니다.
내 애플리케이션 > 앱 설정 > 비즈니스
로 이동합니다.
앱 아이콘을 등록합니다.
사업자 정보를 등록합니다.
정상적으로 등록하셨다면, 아래처럼 표시됩니다.
내 애플리케이션 > 앱 설정 > 플랫폼
으로 이동합니다.
GitHub 코드 기준으로 설명하겠습니다.
Android 플랫폼 등록을 클릭합니다.
AndroidManifest.xml
의 package 를 참고합니다.
MainActivity.java
의 getKeyHash()
메서드를 사용해 키해시를 얻습니다.
Logcat에서 확인한 값을 키 해시에 입력합니다.
브라우저로 돌아가 아래처럼 입력합니다.
정상적으로 입력되었다면, 아래처럼 표시됩니다.
- 필요한 모듈 설치
- 인터넷 사용 권한 설정하기
- Java8 사용설정하기
Android SDK를 사용하기 위한 최소 요구사양
build.gradle(Project)
파일에 다음과 같이 Android SDK 레파지토리(Repository)를 설정합니다.
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
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" // 카카오내비
}
여기선 카카오 로그인만 필요하기 때문에 첫번째 줄만 설치합니다.
AndroidManifest.xml
파일에 다음과 같이 인터넷 사용 권한을 설정해줍니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sample">
<!-- 인터넷 사용 권한 설정-->
<uses-permission android:name="android.permission.INTERNET" />
...
// Java 8 사용을 위한 build.gradle 설정
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
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.xml
의 application
에도 Kakao SDK 초기화를 수행한 클래스의 이름을 설정해야 합니다.
이 예제에선 GlobalApplication.java
클래스에서 초기화를 했으므로 아래와 같이 추가해줍니다.
<application
<!-- android:name 설정 -->
android:name=".GlobalApplication"
...
>
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>
// 로그인 공통 callback 구성
UserApiClient.getInstance().loginWithKakaoTalk(MainActivity.this,(oAuthToken, error) -> {
if (error != null) {
Log.e(TAG, "로그인 실패", error);
} else if (oAuthToken != null) {
Log.i(TAG, "로그인 성공(토큰) : " + oAuthToken.getAccessToken());
}
});
UserApiClient.getInstance().logout(error -> {
if (error != null) {
Log.e(TAG, "로그아웃 실패, SDK에서 토큰 삭제됨", error);
}else{
Log.e(TAG, "로그아웃 성공, SDK에서 토큰 삭제됨");
}
});
여기선 회원번호와 이메일만 가져오도록 하겠습니다.
UserApiClient.getInstance().me((user, meError) -> {
if (meError != null) {
Log.e(TAG, "사용자 정보 요청 실패", meError);
} else {
Log.i(TAG, "사용자 정보 요청 성공" +
"\n회원번호: "+user.getId() +
"\n이메일: "+user.getKakaoAccount().getEmail());
}
});
여기로 들어가서 원하는 크기로 다운로드 받아 사용하면 됩니다.