처음 들어오신 분은 이전 글을 참고해 주세요.
코드 작성
자 그럼 이렇게 초기 설정이 끝났고 실제로 구현을 해보도록 하겠습니다.
제가 작성한 코드를 보고 이해가 안 되거나 궁금한 부분이 있으면 아래를 참고해주세요.
우선 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()에서 실제로 로그인 이후 이동하는 액티비티를 설정합니다.
결과 확인
자 이제 실제로 구현된 화면을 확인해보도록 하겠습니다.
생성된 버튼을 클릭하면 카카오와 연동이 되어 회원가입 절차가 이루어지고 설정한 액티비티로 넘어가는 것을 볼 수 있습니다.
추후 다른 글로 카카오톡 로그아웃 방법을 다뤄보도록 하겠습니다.
이상으로 카카오톡으로 로그인 서비스를 구현해 봤습니다.
감사합니다.
'프로그래밍 > 안드로이드[Android]' 카테고리의 다른 글
[Android] 안드로이드 앱 초기 실행시 권한 요청하기 (0) | 2023.05.09 |
---|---|
안드로이드 SHA-1 확인(디버그 서명 인증서) (0) | 2023.02.16 |
[안드로이드] 카카오 톡 로그인 서비스 구현 [2/3] (0) | 2021.04.11 |
[안드로이드] 카카오 톡 로그인 서비스 구현 [1/3] (0) | 2021.04.11 |
[안드로이드] Logcat 출력 시 색상 변경하기. (0) | 2020.09.03 |