카카오 간편 로그인 속도 개선


청소할 시간

네이버, 카카오, 페이스북은 쉬운 로그인을 제공하기 위해 달려들었고, 카카오만이 테스트 중 로그인이 느렸다.

너무 느리다면 사용자는 어떻게 사용할까요? 더 로드해야 하나요?

결론은 개선할 수 있는 방법이 있었으니 정리해보겠습니다.

다시는 찾기싫고 머리가 안좋아서 기억력도 안좋고..

SceneDelegate 문제의 코드

if let url = URLContexts.first?.url {
    if (AuthApi.isKakaoTalkLoginUrl(url)) {
        // MARK: 카카오 로그인
        _ = AuthController.handleOpenUrl(url: url)
    }
}

// MARK: 네이버 로그인
let instance = NaverThirdPartyLoginConnection.getSharedInstance()
instance?.isNaverAppOauthEnable = true      // 네이버 앱으로 인증 방식 활성화
instance?.isInAppOauthEnable = true         // SafariViewController로 인증 방식 활성화
instance?.isOnlyPortraitSupportedInIphone() // 아이폰에서 인증 화면을 세로모드에서만 적용

// 네이버 로그인 화면이 새로 등장 -> 토큰을 요청하는 코드
let result = NaverThirdPartyLoginConnection.getSharedInstance().receiveAccessToken(URLContexts.first?.url)
if result == CANCELBYUSER {
    Utils.Log("result : \(result)")
}

SceneDelegate 변경 코드

카카오 로그인 시 네이버 코드를 사용할 수 없는 경우 서로 상호 작용하는 동작이 발생하는 것으로 나타납니다.

자세한 내용이 궁금하시면 찾아볼게 많아서 자세히 정리를 못하겠습니다. 결론만!

...
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    ...
    
    // MARK: 카카오, 네이버, 페이스북 로그인
    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
        if URLContexts.first?.url.scheme == "test",
           let url = URLContexts.first?.url {
            AppInfo.shared.uriSchemeURL = url.absoluteString.replacingOccurrences(of: "test://", with: "https://")
            
            NotificationCenter.default.post(name: Notification.Name("didReceiveUriSchemeURL"), object: nil)
        }
        else if let url = URLContexts.first?.url {
            if (AuthApi.isKakaoTalkLoginUrl(url)) {
                // MARK: 카카오 로그인
                _ = AuthController.handleOpenUrl(url: url)
            } else {
                // MARK: 네이버 로그인
                let instance = NaverThirdPartyLoginConnection.getSharedInstance()
                instance?.isNaverAppOauthEnable = true      // 네이버 앱으로 인증 방식 활성화
                instance?.isInAppOauthEnable = true         // SafariViewController로 인증 방식 활성화
                instance?.isOnlyPortraitSupportedInIphone() // 아이폰에서 인증 화면을 세로모드에서만 적용
                
                // 네이버 로그인 화면이 새로 등장 -> 토큰을 요청하는 코드
                let result = NaverThirdPartyLoginConnection.getSharedInstance().receiveAccessToken(URLContexts.first?.url)
                if result == CANCELBYUSER {
                    Utils.Log("result : \(result)")
                }
            }
        }
    }
    
    // Universal Link (앱 실행중)
    func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
        ...
    }
}

참조

https://devtalk.kakao.com/t/topic/126696/22?page=2

카카오 로그인 시 토큰 받는 속도가 느리고 다른 앱으로 전환되는 현상 발생

안녕하세요. 어제까지 휴가라서 답장이 늦었습니다. 용서. 답변에 따라 코드를 검토하고 수정하겠습니다.

devtalk.kakao.com