From af444d6afffc754ed215b209d6745d0f9c0bc80d Mon Sep 17 00:00:00 2001 From: MinjaeLee <2alswo7@khu.ac.kr> Date: Tue, 28 Dec 2021 21:09:07 +0900 Subject: [PATCH] =?UTF-8?q?[FIX]=20#246=20-=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=B5=9C=EC=A2=85=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NADA-iOS-forRelease/Sources/AppDelegate.swift | 106 ++++++------------ .../More/MoreViewController.swift | 6 +- 2 files changed, 41 insertions(+), 71 deletions(-) diff --git a/NADA-iOS-forRelease/Sources/AppDelegate.swift b/NADA-iOS-forRelease/Sources/AppDelegate.swift index bca7effe..41646cb6 100644 --- a/NADA-iOS-forRelease/Sources/AppDelegate.swift +++ b/NADA-iOS-forRelease/Sources/AppDelegate.swift @@ -19,16 +19,47 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. - removeTokenAtFirstLaunch() KakaoSDKCommon.initSDK(appKey: "5b8dd8cc878344bb7532eeca4365a4aa") - let acToken = UserDefaults.standard.string(forKey: Const.UserDefaultsKey.accessToken) - let rfToken = UserDefaults.standard.string(forKey: Const.UserDefaultsKey.refreshToken) - if acToken != "" { - postUserTokenReissue(request: UserTokenReissueRequset(accessToken: acToken ?? "", refreshToken: rfToken ?? "")) + if acToken != nil { + if UserDefaults.standard.bool(forKey: Const.UserDefaultsKey.isAppleLogin) { + // 애플 로그인으로 연동되어 있을 때, -> 애플 ID와의 연동상태 확인 로직 + let appleIDProvider = ASAuthorizationAppleIDProvider() + appleIDProvider.getCredentialState(forUserID: Const.UserDefaultsKey.userID) { (credentialState, error) in + switch credentialState { + case .authorized: + print("해당 ID는 연동되어있습니다.") + self.isLogin = true + case .revoked: + print("해당 ID는 연동되어있지않습니다.") + self.isLogin = false + case .notFound: + print("해당 ID를 찾을 수 없습니다.") + self.isLogin = false + default: + break + } + } + } else { + if AuthApi.hasToken() { // 유효한 토큰 존재 + UserApi.shared.accessTokenInfo { (_, error) in + if let error = error { + if let sdkError = error as? SdkError, sdkError.isInvalidTokenError() == true { + self.isLogin = false + } + } else { + // 토큰 유효성 체크 성공(필요 시 토큰 갱신됨) + self.isLogin = true + } + } + } else { + // 카카오 토큰 없음 -> 로그인 필요 + self.isLogin = false + } + } } else { - self.isLogin = false + self.isLogin = false // acToken 값이 nil일 때 -> 로그인 뷰로 } // 앱 실행 중 애플 ID 강제로 연결 취소 시 @@ -40,16 +71,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate { return true } - private func removeTokenAtFirstLaunch() { - guard UserDefaults.isFirstLaunch() else { - return - } - UserDefaults.standard.removeObject(forKey: Const.UserDefaultsKey.accessToken) - UserDefaults.standard.removeObject(forKey: Const.UserDefaultsKey.refreshToken) - UserDefaults.standard.removeObject(forKey: Const.UserDefaultsKey.isKakaoLogin) - UserDefaults.standard.removeObject(forKey: Const.UserDefaultsKey.isAppleLogin) - } - // MARK: UISceneSession Lifecycle func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { @@ -63,59 +84,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. // Use this method to release any resources that were specific to the discarded scenes, as they will not return. } - - private func postUserTokenReissue(request: UserTokenReissueRequset) { - UserAPI.shared.userTokenReissue(request: request) { response in - switch response { - case .success: - print("postUserTokenReissue - Success") - if UserDefaults.standard.bool(forKey: Const.UserDefaultsKey.isAppleLogin) { - // 애플 로그인으로 연동되어 있을 때, -> 애플 ID와의 연동상태 확인 로직 - let appleIDProvider = ASAuthorizationAppleIDProvider() - appleIDProvider.getCredentialState(forUserID: Const.UserDefaultsKey.userID) { (credentialState, error) in - switch credentialState { - case .authorized: - print("해당 ID는 연동되어있습니다.") - self.isLogin = true - case .revoked: - print("해당 ID는 연동되어있지않습니다.") - self.isLogin = false - case .notFound: - print("해당 ID를 찾을 수 없습니다.") - self.isLogin = false - default: - break - } - } - } else { - if AuthApi.hasToken() { // 유효한 토큰 존재 - UserApi.shared.accessTokenInfo { (_, error) in - if let error = error { - if let sdkError = error as? SdkError, sdkError.isInvalidTokenError() == true { - self.isLogin = false - } - } else { - // 토큰 유효성 체크 성공(필요 시 토큰 갱신됨) - self.isLogin = true - } - } - } else { - // 카카오 토큰 없음 -> 로그인 필요 - self.isLogin = false - } - } - case .requestErr(let message): - print("postUserTokenReissue - requestErr: \(message)") - self.isLogin = false - case .pathErr: - print("postUserTokenReissue - pathErr") - case .serverErr: - print("postUserTokenReissue - serverErr") - case .networkFail: - print("postUserTokenReissue - networkFail") - } - } - } } extension UserDefaults { diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/More/MoreViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/More/MoreViewController.swift index a2affcbd..e54720fc 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/More/MoreViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/More/MoreViewController.swift @@ -112,7 +112,8 @@ extension MoreViewController { self.makeOKAlert(title: "", message: "로그아웃이 완료 되었습니다.") { _ in if let acToken = UserDefaults.standard.string(forKey: Const.UserDefaultsKey.accessToken) { self.logoutUserWithAPI(token: acToken) - self.defaults.set(false, forKey: Const.UserDefaultsKey.hasBeenLaunchedBeforeFlag) + self.defaults.removeObject(forKey: Const.UserDefaultsKey.accessToken) + self.defaults.removeObject(forKey: Const.UserDefaultsKey.refreshToken) self.defaults.removeObject(forKey: Const.UserDefaultsKey.darkModeState) let nextVC = UIStoryboard(name: Const.Storyboard.Name.login, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.loginViewController) nextVC.modalPresentationStyle = .overFullScreen @@ -146,7 +147,8 @@ extension MoreViewController { self.makeOKAlert(title: "", message: "모든 명함이 삭제되었습니다.") { _ in if let acToken = UserDefaults.standard.string(forKey: Const.UserDefaultsKey.accessToken) { self.deleteUserWithAPI(token: acToken) - self.defaults.set(false, forKey: Const.UserDefaultsKey.hasBeenLaunchedBeforeFlag) + self.defaults.removeObject(forKey: Const.UserDefaultsKey.accessToken) + self.defaults.removeObject(forKey: Const.UserDefaultsKey.refreshToken) self.defaults.removeObject(forKey: Const.UserDefaultsKey.darkModeState) let nextVC = UIStoryboard(name: Const.Storyboard.Name.login, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.loginViewController) nextVC.modalPresentationStyle = .overFullScreen