본문 바로가기

IT개발일지/Android

[Android] 카카오 로그인 연동하기 V2 - JAVA

developers.kakao.com/docs/latest/ko/kakaologin/android

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

현재 카카오 개발자 문서를 참고할 경우 Kotlin 기준으로 문서가 소개 되어있다.

하지만 아직 꼬린이인 JAVA로 개발하고 있는 안드로이드 개발자에겐 함께 사용하거나 접목이 어려울 경우가 있다.

1. 카카오모듈 세팅하기

- build.gradle(Module:.app)

implementation "com.kakao.sdk:v2-user:2.4.2"

- build.gradle(Project)

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

2. Redirect URI 설정하기 (AndroidManifest 선언)

<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" />

<data
android:host="oauth"
android:scheme="kakao_native_app_key" />
</intent-filter>
</activity>

 

3. 카카오로그인 사용하기

btKakaoLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (UserApiClient.getInstance().isKakaoTalkLoginAvailable(act)) {
UserApiClient.getInstance().loginWithKakaoTalk(act, kakaoCallback);
} else {
UserApiClient.getInstance().loginWithKakaoAccount(act, kakaoCallback);
}
}
});

* 위는 카카오톡이 깔려있을 경우 아래는 카카오톡이 설치가 안되었을경우를 의미합니다.

* 여기서 act 는 현재 Activity 즉 Context를 의미합니다. this 또는 context 를 사용해주시면됩니다.

4. 카카오 로그인 콜백 선언하기

Function2<OAuthToken, Throwable, Unit> kakaoCallback = new Function2<OAuthToken, Throwable, Unit>() {
@Override
public Unit invoke(OAuthToken oAuthToken, Throwable throwable) {
if (oAuthToken != null) {

}
if (throwable != null) {

Log.d(HoUtils.TAG, "Message : " + throwable.getLocalizedMessage());
}
getKaKaoProfile();
return null;
}
};

5. 카카오 정보가져오기

private void getKaKaoProfile() {
UserApiClient.getInstance().me(new Function2<User, Throwable, Unit>() {
@Override
public Unit invoke(User user, Throwable throwable) {
if (user != null) {
Log.d(HoUtils.TAG, "Kakao id =" + user.getId());
 //계정정보를 불러 왔을 경우
} else {
 //계정정보가 없을경우
}
if (throwable != null) {
Log.d(HoUtils.TAG, "invoke: " + throwable.getLocalizedMessage());
}
return null;
}
});
}

※파트너스 활동을 통해 일정액의 수수료를  제공받을 수 있음※