[swift] Swift FirebaseUI를 사용하여 앱 자동 로그인 구현하기

FirebaseUI는 Firebase 인증을 간편하게 구현할 수 있는 도구입니다. Swift를 사용하여 앱의 자동 로그인 기능을 구현하려면 FirebaseUI를 사용하는 것이 좋은 방법입니다. 이번 블로그 포스트에서는 FirebaseUI를 사용하여 Swift 앱에서 자동 로그인을 구현하는 방법을 알아보겠습니다.

FirebaseUI 설치하기

FirebaseUI는 CocoaPods를 통해 설치할 수 있습니다. 프로젝트의 Podfile에 다음과 같은 내용을 추가하세요:

pod 'FirebaseUI/Auth'

해당 코드를 추가한 뒤 터미널에서 pod install 명령어를 실행하여 FirebaseUI를 설치합니다.

FirebaseUI 설정하기

FirebaseUI를 사용하려면 Firebase 프로젝트에 앱을 추가해야 합니다. Firebase 콘솔에서 새로운 앱을 추가하고, 앱 설정에서 Firebase iOS SDK 구성 파일(GoogleService-Info.plist)을 다운로드하여 프로젝트에 추가하세요.

자동 로그인 구현하기

FirebaseUI는 다양한 인증 방법을 지원합니다. 이 중에서도 일반적인 이메일/비밀번호 인증 방식을 사용하여 자동 로그인을 구현해보겠습니다.

import UIKit
import Firebase
import FirebaseUI

class ViewController: UIViewController, FUIAuthDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // FirebaseUI 인증 뷰컨트롤러 생성
        let authUI = FUIAuth.defaultAuthUI()
        
        // 인증 방법 설정 (이메일/비밀번호)
        let providers: [FUIAuthProvider] = [
            FUIGoogleAuth(),
            FUIEmailAuth()
        ]
        authUI?.providers = providers
        
        // 로그인 완료 후 돌아올 URL 설정
        let callbackURL = URL(string: "your-app-url-scheme://")!
        authUI?.delegate = self
        authUI?.handleOpen(url, sourceApplication: nil)
        
        // FirebaseUI 인증 화면 표시
        let authViewController = authUI!.authViewController()
        self.present(authViewController, animated: true, completion: nil)
    }
    
    // 로그인이 완료되면 호출되는 메서드
    func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?) {
        // 로그인이 성공적으로 완료된 경우
        if error == nil {
            // 자동 로그인 처리
            
            // AppDelegate에서 사용자 정보 저장
            // 유저 정보를 UserDefaults 등에 저장하는 방식으로 구현 가능
            
            // 자동 로그인 처리 후 홈 화면으로 이동
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let homeViewController = storyboard.instantiateViewController(withIdentifier: "HomeViewController")
            self.present(homeViewController, animated: true, completion: nil)
        } else {
            // 로그인 실패 처리
            print("로그인 실패")
        }
    }
    
    // 자동 로그인 여부 확인
    func checkAutoLogin() {
        // AppDelegate 등에서 저장된 유저 정보를 확인하여 자동 로그인 처리
    }

}

위 코드에서 providers 배열에는 사용할 인증 방법을 설정합니다. 이번 예제에서는 Google 인증과 이메일/비밀번호 인증 방식을 사용하도록 설정했습니다.

또한 authUI?.handleOpen(url) 메서드를 호출하여 FirebaseUI가 인증 완료 후에 돌아올 URL을 처리할 수 있도록 해줍니다.

자동 로그인이 완료되면 authUI(_:didSignInWith:error:) 메서드가 호출되고, 이를 통해 로그인이 성공적으로 완료되었는지 확인할 수 있습니다. 로그인이 성공한 경우 사용자 정보를 저장하여 자동 로그인을 처리할 수 있습니다.

마지막으로 checkAutoLogin() 메서드를 호출하면 저장된 유저 정보를 확인하여 자동 로그인을 처리할 수 있습니다.

이제 FirebaseUI를 사용하여 Swift로 앱의 자동 로그인 기능을 구현하는 방법을 알아보았습니다. FirebaseUI는 간단하게 사용할 수 있으며 다양한 인증 방식을 제공하기 때문에 앱의 인증 기능 구현을 더욱 쉽게 만들어 줄 수 있습니다.


참고 자료: