본문 바로가기

프로그래밍/안드로이드[Android]

[안드로이드] 카카오 톡 로그인 서비스 구현 [3/3]



처음 들어오신 분은 이전 글을 참고해 주세요.

 

 

[안드로이드] 카카오 톡 로그인 서비스 구현 [2/3]

자 이전 글에 이어서 계속 진행하도록 하겠습니다. 혹시나 처음 들어오신 분은 이전 글을 참고해주시기 바랍니다. 이전 글 [안드로이드] 카카오 톡 로그인 서비스 구현 [1/3] 안녕하세요 이번에는

baessi.tistory.com

코드 작성

 

자 그럼 이렇게 초기 설정이 끝났고 실제로 구현을 해보도록 하겠습니다.

 

제가 작성한 코드를 보고 이해가 안 되거나 궁금한 부분이 있으면 아래를 참고해주세요.

 

Kakao Developers_

더 나은 세상을 꿈꾸고 그것을 현실로 만드는 이를 위하여 카카오에서 앱 개발 플랫폼 서비스를 시작합니다.

developers.kakao.com

 

우선 GlobalApplication.java 파일을 생성합니다

 

그리고 다음과 같이 작성합니다.

public class GlobalApplication extends Application {
    private static GlobalApplication instance;

    public static final GlobalApplication getGlobalApplicationContext(){
        if(instance == null) {
            throw new IllegalStateException("GlobalApplication does not inherit com.kakao.GlobalApplication");
        }
        return instance;
    }

    protected static class KakaoSDKAdapter extends KakaoAdapter {
        /**
         * Session Config에 대해서는 default값들이 존재한다.
         * 필요한 상황에서만 override해서 사용하면 됨.
         * @return Session의 설정값.
         */
        @Override
        public ISessionConfig getSessionConfig() {
            return new ISessionConfig() {
                @Override
                public AuthType[] getAuthTypes() {
                    return new AuthType[] {AuthType.KAKAO_LOGIN_ALL};
                }

                @Override
                public boolean isUsingWebviewTimer() {
                    return false;
                }

                @Override
                public boolean isSecureMode() {
                    return false;
                }

                @Override
                public ApprovalType getApprovalType() {
                    return ApprovalType.INDIVIDUAL;
                }

                @Override
                public boolean isSaveFormData() {
                    return true;
                }
            };
        }

        @Override
        public IApplicationConfig getApplicationConfig() {
            return new IApplicationConfig() {
                @Override
                public Context getApplicationContext() {
                    return GlobalApplication.getGlobalApplicationContext();
                }
            };
        }
    }

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

 

코드에 대한 상세한 설명은 kakao developers를 참고해주세요.

 

 

다음은 레이아웃에 카카오 버튼을 생성합니다.

<com.kakao.usermgmt.LoginButton
    android:id="@+id/com_kakao_login"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginBottom="30dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"/>

 

로그인 버튼은 커스텀이 가능하다고 하니 추후에 다뤄보도록 하겠습니다.

 

 

그리고 실제로 로그인을 하는 액티비티에 다음과 같이 작성합니다.

 

저는 LoginActivity.java에 작성을 했습니다.

 

public class LoginActivity extends AppCompatActivity {
    private SessionCallback callback;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);


        //카카오톡 로그인 init
        if (KakaoSDK.getAdapter() == null) {
            KakaoSDK.init(new GlobalApplication.KakaoSDKAdapter());
        }

        /**
         * 로그인 버튼을 클릭 했을시 access token을 요청하도록 설정한다.
         *
         * @param savedInstanceState 기존 session 정보가 저장된 객체
         */
        callback = new SessionCallback();
        Session.getCurrentSession().addCallback(callback);
        Session.getCurrentSession().checkAndImplicitOpen();
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (Session.getCurrentSession().handleActivityResult(requestCode, resultCode, data)) {
            return;
        }

        super.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Session.getCurrentSession().removeCallback(callback);
    }

    private class SessionCallback implements ISessionCallback {

        @Override
        public void onSessionOpened() {
            redirectSignupActivity();
        }

        @Override
        public void onSessionOpenFailed(KakaoException exception) {
            if (exception != null) {
                Logger.e(exception);
            }
        }
    }

    protected void redirectSignupActivity() {
        //로그인이 완료된 후 이동하는 액티비티 지정
        final Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}

redirectSignupActivity()에서 실제로 로그인 이후 이동하는 액티비티를 설정합니다.

 

 

결과 확인

자 이제 실제로 구현된 화면을 확인해보도록 하겠습니다.

 

생성된 버튼을 클릭하면 카카오와 연동이 되어 회원가입 절차가 이루어지고 설정한 액티비티로 넘어가는 것을 볼 수 있습니다.

추후 다른 글로 카카오톡 로그아웃 방법을 다뤄보도록 하겠습니다.

 

이상으로 카카오톡으로 로그인 서비스를 구현해 봤습니다.

 

감사합니다.