【Swift】FirebaseUI를 사용한 Twitter 로그인 기능 구현 방법 ①

소개



개인 앱을 만들 때 FirebaseUI를 사용한 Twitter 로그인 기능을 구현했으므로,
비망록이 테라 명령의 공유를하겠습니다.

또, 너무 길어서 하나의 기사에 모두를 쓸 수 없었기 때문에 3개의 기사로 나누었습니다.
본 기사는 완성형과 코드의 전용이 됩니다.

구현 절차에 대한 기사는 다음과 같습니다.
· 【Swift】FirebaseUI를 사용한 Twitter 로그인 기능의 구현 방법②
· 【Swift】FirebaseUI를 사용한 Twitter 로그인 기능의 구현 방법③

환경
· Swift 버전 5.3
·XCode 버전 12.3
· CocoaPods 버전 1.10.1

전제로



· CocoaPods
Twitter API에 등록되어 있는 것
Firebase console에 등록되어 있는 것

완성형





로그인 후 Firebase Authentication



사용자가 추가되었음을 알 수 있습니다.


코드



AppDelegate.swift

import UIKit
import Firebase

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        return true
    }

    // MARK: UISceneSession Lifecycle

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // 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.
    }

}

ViewController.swift

import UIKit
import Firebase
import FirebaseUI

class ViewController: UIViewController, FUIAuthDelegate {

    let authUI = FUIAuth.defaultAuthUI()
    let providers: [FUIAuthProvider] = [
        FUIOAuth.twitterAuthProvider()
    ]

    override func viewDidLoad() {
        super.viewDidLoad()

        authUI!.delegate = self
        authUI!.providers = providers

        checkLoggedIn()
    }

    // ログイン(ログイン失敗)後に呼ばれるメソッド
    func authUI(_ authUI: FUIAuth, didSignInWith user: User?, error: Error?) {
        // handle user and error as necessary
    }

    func checkLoggedIn() {

        Auth.auth().addStateDidChangeListener{auth, user in
            if user != nil{
                print("success")
            } else {
                print("fail")
                self.login()
            }
        }
    }

    func login() {
        let authViewController = authUI!.authViewController()
        self.present(authViewController, animated: true, completion: nil)
    }
}

좋은 웹페이지 즐겨찾기