ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 카카오 간편 로그인 속도 개선
    Language/iOS,AOS 2023. 3. 6. 23:55

     

    정리하게된 계기

    급하게 네이버, 카카오, 페이스북 간편로그인을 붙히고 테스트 진행중에 유독 카카오만 너무 느리게 로그인이 되었다.

    이렇게 느리면 사용자가 어떻게 쓰지..?? 로딩을 더 걸어 줘야 하나??

    결론은 개선 방법이 있었어서 정리해 둔다.

    다시 찾기도 싫고 머리가 나빠서 기억도 몬한다..

     

    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

     

    댓글

Designed by Tistory.