카카오 로그인 v2 Java로 구현하기
Step1. 설정하기
아래 링크로 들어가서 시작하기 설정을 먼저 적용해 주세요.
Step2. Redirect URI 설정하기
카카오 로그인 기능을 구현하기 위해서는 리다이렉션(Redirection)을 통해 인가 코드를 받아야 합니다. 이를 위해, AndroidManifest.xml에 AuthCodeHandlerActivity을 추가하고, <intent-filter> 내에 'android:host'와 'android:scheme' data를 추가하여 redirect_uri을 설정합니다. 'android:scheme' 속성의 값은 'kakao{NATIVE_APP_KEY}' 형식으로 입력합니다. 예를 들어 네이티브 앱 키가 '123456789'라면 'kakao123456789'를 입력합니다.
<application
android:name=".kakaologinjava.SampleApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar">
.
.
.
<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{NATIVE_APP_KEY}" />
</intent-filter>
</activity>
</application>
Step3. 카카오 로그인 API 호출 메소드
/**
* 카카오톡으로 로그인 API 자바 코드
*/
private void kakaoLoginJava() {
// 카카오톡이 설치되어 있으면 카카오톡으로 로그인, 아니면 카카오계정으로 로그인
if (UserApiClient.getInstance().isKakaoTalkLoginAvailable(this)) {
UserApiClient.getInstance().loginWithKakaoTalk(this, (oAuthToken, throwable) -> {
loginCallback(oAuthToken, throwable);
return null;
});
} else {
UserApiClient.getInstance().loginWithKakaoAccount(this, (oAuthToken, throwable) -> {
loginCallback(oAuthToken, throwable);
return null;
});
}
}
/**
* 카카오톡으로 로그인 API 콜백
*/
private void loginCallback(OAuthToken token, Throwable error) {
if (error != null) {
Log.e(TAG, "로그인 실패", error);
} else if (token != null) {
Log.i(TAG, "로그인 성공 ${token.accessToken}");
}
}
// this는 Context 입니다.
로그아웃
/**
* 카카오톡으로 로그인의 로그아웃 API
*/
private void logout() {
UserApiClient.getInstance().logout(error -> {
if (error != null) {
Log.e(TAG, "로그아웃 실패. SDK에서 토큰 삭제됨", error);
} else {
Log.i(TAG, "로그아웃 성공. SDK에서 토큰 삭제됨");
}
return null;
});
}
사용자 정보 요청
/**
* 사용자 정보 요청 (기본)
*/
private void getUserData() {
UserApiClient.getInstance().me((user, error) -> {
if (error != null) {
Log.e(TAG, "사용자 정보 요청 실패", error);
} else if (user != null) {
Log.i(TAG, "사용자 정보 요청 성공" +
"\n회원번호: " + user.getId() +
"\n이메일: " + user.getKakaoAccount().getEmail() +
"\n닉네임: " + user.getKakaoAccount().getProfile().getNickname() +
"\n프로필사진: " + user.getKakaoAccount().getProfile().getProfileImageUrl());
}
return null;
});
}
'안드로이드' 카테고리의 다른 글
[Android] EditText UnderLine 제거하기 (0) | 2021.06.16 |
---|---|
[Android] EditText 공백 및 한글 막기 (0) | 2021.06.13 |
[Android] RecyclerView의 Item 간격 띄우기 (ItemDecoration) (0) | 2021.05.23 |
[Android] 고유키(AndroidID) 가져오기 (0) | 2021.04.21 |
[Android] RecyclerView 마지막 item에만 padding 넣기 (0) | 2021.04.07 |