[iOS]Firebase를 이용한 소셜로그인

chaaansooo·2022년 5월 12일
0

iOS

목록 보기
3/8
post-thumbnail

사전 준비

  1. firebase에 앱 번들 추가 후 info.plist를 받고 프로젝트에 추가해준다

  2. firebase 내에서 authentication에서 구글 로그인을 추가해준다.

  3. Podfile에 사용할 것들을 추가한다

pod 'Firebase/Auth', '8.6.0'
pod 'Firebase/Firestore', '8.6.0'
pod 'GoogleSignIn', '5.0.2'
  1. URL Types에서 url schemes 설정을 해준다

설정

  1. Firebase와 GoogleSignIn을 import해준다.

  2. AppDelegate에 GIDSignInDelegate 프로토콜을 받는다.

  3. AppDelegate의 didFinishLaunchingWithOptionsFirebaseApp.configure()로 firebase를 앱 실행시 초기화해준다

  4. 구글 로그인 델리게이트를 추가해준다
    GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
    GIDSignIn.sharedInstance().delegate = self

  5. 구글의 인증 프로세스가 끝날 때 앱이 수신하는 url을 처리해주는 openurl 메소드를 추가해주고, GIDSignIn.sharedInstance().handle(url)을 리턴해준다

로그인

  1. googlesignin을 import해준다
  2. googleLogInButton 속성을 GIDSignInButton으로 바꿔준다.
  3. googleLogInButton을 누르면 띄울 웹뷰를 위한 뷰컨을 추가해준다.
    GIDSignIn.sharedInsrtance().presentingViewController = self
  4. 버튼이 눌렸을 때 실행되는 함수에 GIDSignIn.sharedInstance().signIn()을 추가해서 로그인이 진행될 수 있도록 해준다.
  5. appdelegate에서 우리의 로그인이 진행되는 과정에서 인증을 한 후 전달된 로그인 값을 처리하는 didSignInFor델리게이트 함수 내에서 idtoken값과 accesstoken 값을 받아와서 firebase 인증 정보에 등록해준다.
            guard let authentication = user.authentication else { return }
        let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken, accessToken: authentication.accessToken)
        Auth.auth().signIn(with: credential) {[weak self] _, _ in
            self?.showMainViewController()
        }

로그아웃

로그아웃 버튼이 누르면 실행되는 함수에서 signOut()을 해주고, 화면을 rootViewController로 전환해준다

        let firebaseAuth = Auth.auth()
        do {
            try firebaseAuth.signOut()
            self.navigationController?.popToRootViewController(animated: true)
        } catch let signOutError as NSError {
            print ("Error signing out: %@", signOutError)
        }
profile
악으로 깡으로 버티기

0개의 댓글