public class GlobalApplication extends Application { private static GlobalApplication instance;
public static final GlobalApplication getGlobalApplicationContext() { if (instance == null) throw new IllegalStateException("this application 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(); } }; } }
private void redirectLoginActivity() { final Intent intent = new Intent(this, LoginActivity.class); startActivity(intent); finish(); }
private void requestMe() { // https://developers.kakao.com/apps/361201/settings/user // 앱 생성된 이름 선택(테스트 앱) → 사용자 관리 → 접근권한관리항목 설정 List<String> keys = new ArrayList<>(); keys.add("properties.nickname"); keys.add("properties.profile_image"); keys.add("kakao_account.email");
UserManagement.getInstance().me(keys, new MeV2ResponseCallback() { @Override public void onFailure(ErrorResult errorResult) { String message = "failed to get user info. msg=" + errorResult; Logger.d(message); }
@Override public void onSessionClosed(ErrorResult errorResult) { redirectLoginActivity(); }
private void onClickUnlink() { // 앱 연결 해제는 카카오 플랫폼에 연결된 사용자와 앱의 연결을 영구 해제함으로서 일반적으로 사용자가 앱 탈퇴 요청을 하는 경우와 비슷하다. // 앱 연결 해제가 수행된 사용자는 영구적으로 복구가 불가능하며 카카오 플랫폼 서비스를 더이상 사용할 수 없다. // 단, 다시 앱 연결을 통해 새로운 데이터로 카카오 플랫폼 서비스를 이용할 수는 있다. final String appendMessage = getString(R.string.com_kakao_confirm_unlink); new AlertDialog.Builder(this) .setMessage(appendMessage) .setPositiveButton(getString(R.string.com_kakao_ok_button), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { UserManagement.getInstance().requestUnlink(new UnLinkResponseCallback() { @Override public void onFailure(ErrorResult errorResult) { Logger.e(errorResult.toString()); }
@Override public void onSessionClosed(ErrorResult errorResult) { redirectLoginActivity(); }
@Override public void onNotSignedUp() { LoginActivity loginActivity = new LoginActivity(); loginActivity.redirectSignupActivity(); }
@Override public void onSuccess(Long userId) { redirectLoginActivity(); } }); dialog.dismiss(); } }) .setNegativeButton(getString(R.string.com_kakao_cancel_button), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).show();
}
}
소스코드
- src/main/res/values/strings.xml 을 수정한다.
<string name="kakao_app_key">본인의 앱 키를 적으세요</string>