강의를 듣다가 파이어베이스 로그인 방법이 달라졌져서 한참 헤멘것 같습니다. 그래서 삽질을 통해 개인적으로 방법을 찾아 정리해 봤습니다.
파이어베이스를 이용해 구글 로그인 등 다양한 로그인을 진행할 수 있습니다. 아래는 파이어베이스에서 지원하는 로그인입니다.
그러면 대표적으로 구글 로그인을 하는 방법을 알아보도록 하겠습니다.
다음 공식문서 두개를 보면서 했습니다.
전체흐름은 다음과 같습니다.
1. 파이어베이스에 프로젝트 추가
2. Xcode 사전 작업 파이어베이스 SDK 추가(cocoapod 사용 예정)
3. 로그인 구현
4. 로그아웃 구현
1. 파이어베이스에 프로젝트 추가
파이어베이스 -> 콘솔 -> 프로젝트 추가 -> 이름은 마음대로 설정 -> 프로젝트 생성
2. Xcode 사전 작업 파이어베이스 SDK 추가(cocoapod 사용 예정)
iOS 선택
plist 파일을 다운받아 프로젝트 폴더에 넣기
cocoaPod으로 SDK 추가
"""
pod 'Firebase/Auth'
pod 'GoogleSignIn'
"""
프로젝트의 AppDelegate.swift 파일에 초기화 코드 추가
// AppDelegate.swift
import UIKit
import Firebase // 여기 추가
import GoogleSignIn // 나중에 사용
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure() // 여기 추가
return true
}
// 다음 함수 추가
// 로그인 및 사용자 등록에만은 필요 없는 코드
// 인증이 끝나고 앱이 받는 url을 처리
func application(
_ app: UIApplication,
open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
var handled: Bool
handled = GIDSignIn.sharedInstance.handle(url)
if handled {
// Handle other custom URL types.
return true
}
// If not handled by this app, return false.
return false
}
}
여기까지가 기본적으로 파이어베이스에서 Google 로그인을 사용할 수 있도록 설정을 해 준 것이고 이제 로그인 코드를 추가해 보도록 하겠습니다.
3. 로그인 구현
콘솔에서 다음을 클릭해 주고
Sign-in method -> 추가 제공업체: Google 선택 -> 사용설정 활성화 -> 이메일 선택 및 시작
이제 Xcode에서 구글 로그인에 사용할 버튼을 만들고
IBOulet을 연결한 후에 class를 UIButton- > GIDSignInButton 으로 바꿔줍니다.
해당 버튼의 IBAction에 다음 코드를 넣어 인증을 구현합니다.
import Firebase
import FirebaseAuth
import GoogleSignIn
/// ViewController class에 다음을 추가
@IBAction func googleLogin(_ sender: GIDSignInButton) {
// 구글 인증
guard let clientID = FirebaseApp.app()?.options.clientID else { return }
let config = GIDConfiguration(clientID: clientID)
GIDSignIn.sharedInstance.signIn(with: config, presenting: self) { user, error in
guard error == nil else { return }
// 인증을 해도 계정은 따로 등록을 해주어야 한다.
// 구글 인증 토큰 받아서 -> 사용자 정보 토큰 생성 -> 파이어베이스 인증에 등록
guard
let authentication = user?.authentication,
let idToken = authentication.idToken
else {
return
}
let credential = GoogleAuthProvider.credential(withIDToken: idToken,
accessToken: authentication.accessToken)
// 사용자 정보 등록
Auth.auth().signIn(with: credential) { _, _ in
// 사용자 등록 후에 처리할 코드
}
// If sign in succeeded, display the app's main content View.
}
}
이제 만들어 놓은 버튼을 클릭하면 구글 로그인이 진행되고 파이어베이스에 사용자가 등록됩니다.
다음과 같이 파이어베이스 Authentication에서 제공업체 구글인 사용자가 추가된다면 성공입니다.
추가로 다음을 통해 인증 정보를 가져올 수도 있습니다.
// email 대신 UID를 넣어 가져올 수도 있다.
guard let email = Auth.auth().currentUser?.email else {return}
4. 로그아웃 구현
로그아웃은 간단합니다. 다음을 로그아웃을 원하는 곳에 작성합니다. (ex: IBAction )
let firebaseAuth = Auth.auth()
do {
try firebaseAuth.signOut()
} catch let signOutError as NSError {
print("로그아웃 Error발생:", signOutError)
}
'iOS > Swift' 카테고리의 다른 글
[iOS] KingFisher를 사용해 URL로 이미지 사용하기 (0) | 2022.02.13 |
---|---|
[iOS] 파이어베이스 이메일-비밀번호 가입 및 로그인 (0) | 2022.02.12 |
[iOS] cocoaPod으로 라이브러리 사용 (0) | 2022.02.11 |
[iOS] iOS에서 JSON 파일 사용하는 방법 (0) | 2022.02.09 |
[iOS] iOS HTTP 통신 허용 방법 (0) | 2022.02.09 |