|
|
@@ -40,155 +40,154 @@ import kr.co.zumo.app.lifeplus.zumo.listener.IStartSignCallback;
|
|
|
*/
|
|
|
public class SignInKakao extends SignIn<Activity> {
|
|
|
|
|
|
- private final String TAG = "SignInKakao";
|
|
|
+ private final String TAG = "SignInKakao";
|
|
|
|
|
|
- private KakaoSessionCallback kakaoCallback;
|
|
|
- private IStartSignCallback callback;
|
|
|
- private ISignInListener iSignInListener;
|
|
|
+ private KakaoSessionCallback kakaoCallback;
|
|
|
+ private IStartSignCallback callback;
|
|
|
+ private ISignInListener iSignInListener;
|
|
|
|
|
|
- public SignInKakao(Activity context, IStartSignCallback callback) {
|
|
|
- super(context);
|
|
|
+ public SignInKakao(Activity context, IStartSignCallback callback) {
|
|
|
+ super(context);
|
|
|
|
|
|
- try {
|
|
|
- KakaoSDK.init(new KakaoSDKAdapter());
|
|
|
- } catch (KakaoSDK.AlreadyInitializedException ex) {
|
|
|
- }
|
|
|
+ try {
|
|
|
+ KakaoSDK.init(new KakaoSDKAdapter());
|
|
|
+ } catch (KakaoSDK.AlreadyInitializedException ex) {
|
|
|
+ }
|
|
|
|
|
|
- kakaoCallback = new KakaoSessionCallback();
|
|
|
- Session.getCurrentSession().addCallback(kakaoCallback);
|
|
|
- this.callback = callback;
|
|
|
+ kakaoCallback = new KakaoSessionCallback();
|
|
|
+ Session.getCurrentSession().addCallback(kakaoCallback);
|
|
|
+ this.callback = callback;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void disposeInternal() {
|
|
|
+ kakaoCallback = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void signIn(final ISignInListener listener) {
|
|
|
+ iSignInListener = listener;
|
|
|
+ if (Session.getCurrentSession().isOpened()) {
|
|
|
+ Session.getCurrentSession().checkAndImplicitOpen();
|
|
|
}
|
|
|
+ else {
|
|
|
+ if (callback != null) {
|
|
|
+ callback.signIn(null, 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private class KakaoSessionCallback implements ISessionCallback {
|
|
|
|
|
|
@Override
|
|
|
- public void disposeInternal() {
|
|
|
- kakaoCallback = null;
|
|
|
+ public void onSessionOpened() {
|
|
|
+ getUserInformation();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void signIn(final ISignInListener listener) {
|
|
|
- iSignInListener = listener;
|
|
|
- if (Session.getCurrentSession().isOpened()) {
|
|
|
- Session.getCurrentSession().checkAndImplicitOpen();
|
|
|
- } else {
|
|
|
- if (callback != null) {
|
|
|
- callback.signIn(null, 0);
|
|
|
- }
|
|
|
- }
|
|
|
+ public void onSessionOpenFailed(KakaoException exception) {
|
|
|
+ if (exception != null && iSignInListener != null) {
|
|
|
+ iSignInListener.onFailure(exception.hashCode(), exception.getLocalizedMessage());
|
|
|
+ }
|
|
|
+ removeCallback();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- private class KakaoSessionCallback implements ISessionCallback {
|
|
|
+ private void getUserInformation() {
|
|
|
+ List<String> propertyKeys = new ArrayList<>();
|
|
|
+ propertyKeys.add("properties.nickname");
|
|
|
+ propertyKeys.add("properties.profile_image");
|
|
|
+ propertyKeys.add("kakao_account.email");
|
|
|
|
|
|
- @Override
|
|
|
- public void onSessionOpened() {
|
|
|
- getUserInformation();
|
|
|
+ UserManagement.getInstance().me(propertyKeys, new MeV2ResponseCallback() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onSessionClosed(ErrorResult errorResult) {
|
|
|
+ if (iSignInListener != null) {
|
|
|
+ iSignInListener.onFailure(errorResult.getErrorCode(), errorResult.getErrorMessage());
|
|
|
+ }
|
|
|
+ removeCallback();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onSuccess(MeV2Response meV2Response) {
|
|
|
+ if (meV2Response != null) {
|
|
|
+ String email = meV2Response.getKakaoAccount() != null ? meV2Response.getKakaoAccount().getEmail() : "";
|
|
|
+ String profile_image = meV2Response.getProfileImagePath();
|
|
|
+ String id = String.valueOf(meV2Response.getId());
|
|
|
+ String name = meV2Response.getNickname();
|
|
|
+
|
|
|
+ Log.i(TAG, "getUserInformation() -> onSuccess() -> profile_image: " + profile_image + ", id: " + id + ", email: " + email + ", name: " + name);
|
|
|
+
|
|
|
+ if (iSignInListener != null) {
|
|
|
+ iSignInListener.onSuccess(new SignInResultBean(SignIn.TYPE_KAKAO, id, email, name, profile_image));
|
|
|
+ }
|
|
|
}
|
|
|
+ removeCallback();
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void onSessionOpenFailed(KakaoException exception) {
|
|
|
- if (exception != null) {
|
|
|
- if (iSignInListener != null) {
|
|
|
- iSignInListener.onFailure(exception.hashCode(), exception.getLocalizedMessage());
|
|
|
- }
|
|
|
- }
|
|
|
- removeCallback();
|
|
|
+ @Override
|
|
|
+ public void onFailure(ErrorResult errorResult) {
|
|
|
+ super.onFailure(errorResult);
|
|
|
+
|
|
|
+ Log.e(TAG, "getUserInformation() -> onFailure() -> errorResult: " + errorResult.getErrorMessage());
|
|
|
+
|
|
|
+ int ErrorCode = errorResult.getErrorCode();
|
|
|
+ if (iSignInListener != null) {
|
|
|
+ iSignInListener.onFailure(ErrorCode, errorResult.getErrorMessage());
|
|
|
}
|
|
|
- }
|
|
|
+ removeCallback();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- private void getUserInformation() {
|
|
|
- List<String> propertyKeys = new ArrayList<>();
|
|
|
- propertyKeys.add("properties.nickname");
|
|
|
- propertyKeys.add("properties.profile_image");
|
|
|
- propertyKeys.add("kakao_account.email");
|
|
|
-
|
|
|
- UserManagement.getInstance().me(propertyKeys, new MeV2ResponseCallback() {
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onSessionClosed(ErrorResult errorResult) {
|
|
|
- if (iSignInListener != null) {
|
|
|
- iSignInListener.onFailure(errorResult.getErrorCode(), errorResult.getErrorMessage());
|
|
|
- }
|
|
|
- removeCallback();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onSuccess(MeV2Response meV2Response) {
|
|
|
- if (meV2Response != null) {
|
|
|
- String email = meV2Response.getKakaoAccount() != null ? meV2Response.getKakaoAccount().getEmail() : "";
|
|
|
- String profile_image = meV2Response.getProfileImagePath();
|
|
|
- String id = String.valueOf(meV2Response.getId());
|
|
|
- String name = meV2Response.getNickname();
|
|
|
-
|
|
|
- Log.i(TAG, "getUserInformation() -> onSuccess() -> profile_image: " + profile_image + ", id: " + id + ", email: " + email + ", name: " + name);
|
|
|
-
|
|
|
- if (iSignInListener != null) {
|
|
|
- iSignInListener.onSuccess(new SignInResultBean(SignIn.TYPE_KAKAO, id, email, name, profile_image));
|
|
|
- }
|
|
|
- }
|
|
|
- removeCallback();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onFailure(ErrorResult errorResult) {
|
|
|
- super.onFailure(errorResult);
|
|
|
-
|
|
|
- Log.e(TAG, "getUserInformation() -> onFailure() -> errorResult: " + errorResult.getErrorMessage());
|
|
|
-
|
|
|
- int ErrorCode = errorResult.getErrorCode();
|
|
|
- if (iSignInListener != null) {
|
|
|
- iSignInListener.onFailure(ErrorCode, errorResult.getErrorMessage());
|
|
|
- }
|
|
|
- removeCallback();
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ private void removeCallback() {
|
|
|
+ Session.getCurrentSession().removeCallback(kakaoCallback);
|
|
|
+ }
|
|
|
|
|
|
- private void removeCallback() {
|
|
|
- Session.getCurrentSession().removeCallback(kakaoCallback);
|
|
|
- }
|
|
|
+ public static class KakaoSDKAdapter extends KakaoAdapter {
|
|
|
|
|
|
- public static class KakaoSDKAdapter extends KakaoAdapter {
|
|
|
+ @Override
|
|
|
+ public ISessionConfig getSessionConfig() {
|
|
|
+
|
|
|
+ return new ISessionConfig() {
|
|
|
|
|
|
@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;
|
|
|
- }
|
|
|
- };
|
|
|
+ public AuthType[] getAuthTypes() {
|
|
|
+ return new AuthType[]{AuthType.KAKAO_LOGIN_ALL};
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public IApplicationConfig getApplicationConfig() {
|
|
|
- return () -> App.getInstance().getApplicationContext();
|
|
|
+ public boolean isUsingWebviewTimer() {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean isSecureMode() {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ApprovalType getApprovalType() {
|
|
|
+ return ApprovalType.INDIVIDUAL;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
- if (data != null && Session.getCurrentSession().handleActivityResult(requestCode, resultCode, data)) {
|
|
|
- return;
|
|
|
+ @Override
|
|
|
+ public boolean isSaveFormData() {
|
|
|
+ return true;
|
|
|
}
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IApplicationConfig getApplicationConfig() {
|
|
|
+ return () -> App.getInstance().getApplicationContext();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ if (data != null && Session.getCurrentSession().handleActivityResult(requestCode, resultCode, data)) {
|
|
|
+ return;
|
|
|
}
|
|
|
+ }
|
|
|
}
|