[Android] 카카오 로그인 v2 Java로 구현하기

2021. 5. 24. 12:08·안드로이드

카카오 로그인 v2 Java로 구현하기

 

 

Step1. 설정하기

아래 링크로 들어가서 시작하기 설정을 먼저 적용해 주세요.

 

Kakao Developers

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

developers.kakao.com

 

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
'안드로이드' 카테고리의 다른 글
  • [Android] EditText UnderLine 제거하기
  • [Android] EditText 공백 및 한글 막기
  • [Android] RecyclerView의 Item 간격 띄우기 (ItemDecoration)
  • [Android] 고유키(AndroidID) 가져오기
Been
Been
  • Been
    Been
    Been
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 언어 (0)
        • Kotlin (0)
      • 안드로이드 (17)
      • iOS (3)
      • Git (1)
      • 스터디 (39)
        • 알고리즘 문제 풀이 (1)
        • 99클럽 코테 스터디 TIL (38)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IOS
    nsl
    Androiod
    debugRuntimeClasspath
    코딩테스트준비
    개발자취업
    언더라인 제거
    FragmentStateAdapter
    TIL
    리싸이클러뷰
    풀이실패
    안드로이드
    아이폰
    Coroutines
    자바
    NSR
    밑줄제거
    RecyclerView
    Android
    Git
    깃
    java
    쓰기권한
    EditText
    객체변환
    99클럽
    AndroidID
    WRITE EXTERNAL
    항해99
    maxWidth
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Been
[Android] 카카오 로그인 v2 Java로 구현하기
상단으로

티스토리툴바