Skip to content

Commit 2072452

Browse files
authored
[Bug] 카카오/애플 로그인 관련 버그 디버깅 (#46)
2 parents c9a88b7 + 45007ed commit 2072452

File tree

2 files changed

+33
-13
lines changed

2 files changed

+33
-13
lines changed

Fitfty/Projects/Core/Sources/Error/SocialLoginError.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Foundation
1010

1111
enum SocialLoginError: Error {
1212
case noEmail
13+
case noKakaoAvailable
1314
case loginFail
1415
case expiredToken
1516
case noToken
@@ -21,6 +22,8 @@ extension SocialLoginError: LocalizedError {
2122
switch self {
2223
case .noEmail:
2324
return NSLocalizedString("이메일 제공에 동의해주셔야 서비스 이용이 가능해요", comment: "No Email")
25+
case .noKakaoAvailable:
26+
return NSLocalizedString("카카오 로그인을 이용할 수 없는 계정이에요. 다른 소셜 로그인으로 가입해주세요", comment: "Kakao Login Is Not Available")
2427
case .loginFail:
2528
return NSLocalizedString("로그인에 실패했습니다. 잠시 후 다시 시도해주세요", comment: "Login Fail")
2629
case .expiredToken:

Fitfty/Projects/Core/Sources/SocialLoginManager.swift

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,45 @@ final public class SocialLoginManager: NSObject {
3030

3131
public func tryKakaoLogin(completionHandler: @escaping (Bool) -> Void,
3232
failedHandler: @escaping (Error) -> Void) {
33-
guard isKakaoLoginAvailable() else {
34-
failedHandler(SocialLoginError.loginFail)
35-
return
33+
if isKakaoLoginAvailable() {
34+
loginWithKakaoTalk(completionHandler: completionHandler,
35+
failedHandler: failedHandler)
36+
} else {
37+
loginWithKakaoAccount(completionHandler: completionHandler,
38+
failedHandler: failedHandler)
3639
}
37-
40+
}
41+
42+
public func initailizeKakaoLoginSDK() {
43+
KakaoSDK.initSDK(appKey: APIKey.kakaoAppKeyForLogin)
44+
}
45+
46+
private func loginWithKakaoTalk(completionHandler: @escaping (Bool) -> Void,
47+
failedHandler: @escaping (Error) -> Void) {
3848
UserApi.shared.loginWithKakaoTalk { [weak self] (oauthToken, _) in
3949
if let accessToken = oauthToken?.accessToken {
4050
self?.saveKakaoUserInfo()
41-
self?.requestKakaoLogin(accessToken, completionHandler: completionHandler, failedHandler: failedHandler)
51+
self?.requestKakaoLogin(accessToken,
52+
completionHandler: completionHandler,
53+
failedHandler: failedHandler)
4254
} else {
4355
failedHandler(SocialLoginError.loginFail)
4456
}
4557
}
4658
}
4759

48-
public func initailizeKakaoLoginSDK() {
49-
KakaoSDK.initSDK(appKey: APIKey.kakaoAppKeyForLogin)
60+
private func loginWithKakaoAccount(completionHandler: @escaping (Bool) -> Void,
61+
failedHandler: @escaping (Error) -> Void) {
62+
UserApi.shared.loginWithKakaoAccount { [weak self] (oauthToken, _) in
63+
if let accessToken = oauthToken?.accessToken {
64+
self?.saveKakaoUserInfo()
65+
self?.requestKakaoLogin(accessToken,
66+
completionHandler: completionHandler,
67+
failedHandler: failedHandler)
68+
} else {
69+
failedHandler(SocialLoginError.loginFail)
70+
}
71+
}
5072
}
5173

5274
private func requestKakaoLogin(_ accessToken: String,
@@ -192,11 +214,6 @@ extension ASAuthorizationController: ASAuthorizationControllerDelegate {
192214
break
193215
}
194216

195-
guard hasEmail(email: email) else {
196-
failedHandler?(SocialLoginError.noEmail)
197-
return
198-
}
199-
200217
let request = AppleLoginRequest(userIdentifier: userIdentifier,
201218
userName: fullName,
202219
userEmail: email,
@@ -205,7 +222,7 @@ extension ASAuthorizationController: ASAuthorizationControllerDelegate {
205222
}
206223

207224
public func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
208-
failedHandler?(error)
225+
failedHandler?(SocialLoginError.loginFail)
209226
}
210227
}
211228

0 commit comments

Comments
 (0)