본문 바로가기
Swift랑 친해지기/라이브러리

[iOS] Firebase Auth 사용해보기 (로그인/회원가입)

by 데브킹덕 2022. 11. 4.

OAuth란?

- 사용자  인증 방식에  대한 업계 표준 프로토콜

- 아이디/ 비밀번호를 노출하지 않고 OAuth를 사용하는 업체의 API 접근 권한을 위임 받음

 

  • User - Service Provider에 계정을 가지고 있는 사용자
  • Consumer - Service Provider의 API(제공 기능)를 사용하려는 서비스 (WEB,APP)
  • Service Provider - OAuth를 사용하여 API를 제공하는 서비스
  • Access Token - 인증 완료 후 Service Provider의 제공 기능을 이용할 수 있는 권한을 위임받은 인증 키

 

Auth를 이용한 로그인 과정

1. User가 Consumer(앱)에 로그인(google,Apple 등 ) 요청

 

2. 이 앱에 서버가 Service Provider (google,Apple 등)에게 권한 달라고 요청함 - Request Token

 

3. Service Provider는 User에게 권한 위임확인 요청함

권한 위임확인 요청 예시

4. 권한 위임 요청에 승인을 User가 Service Provider에게 보냄 (확인 버튼 누름)

 

5. Service Token을 앱에 Access Token을 내어줌

- Service Provider의 제공 기능을 이용할 수 있는 권한을 위임받은 인증 키 포함

- 앱은 User의 일부정보에 접근할 수 있는 권한을 가짐 

- Token은 로그인 서버에서 관리하게 됨 

(로그인 서버 - 백엔드 개발자가 없을시 Firebase 등으로 대체 가능)

 

6. 로그인 완료

 

참고)

https://firebase.google.com/docs/ios/setup

 

Apple 프로젝트에 Firebase 추가  |  Apple 플랫폼용 Firebase

Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기 이 페이지는 Cloud Translation API를 통해 번역되었습니

firebase.google.com

 

 

 

Firebase 콘솔 프로젝트 만들기 - 프로젝트 추가

 

 

프로젝트 이름 설정

 

Google 애널리틱스를 통해 다음 기능들을 사용할 수 있음

사용시에는 하단에 설정창 클릭 , 비사용시 해제

 

 

프로젝트 추가 생성이 되었다면 iOS버튼을 눌러 앱을 추가하여 시작

 

내가 만드는 Xcode의 BundleIdentifier을 복붙

 

 

 

GoogleService-Info를 다운받고 Xcode에 추가 해주면 됨

* 이때 두번 이상 다운받을 경우 GoogleService-Info(1...)이 되기 때문에 오류남

 

 

프로젝트 파일 경로에 찾아가서 CocoaPods를 이용해 Firebase SDK를 다운받으면 됨

* SDK - Software Development Kit, 소프트웨어 개발 도구모음 

 

//프젝 파일에 경로에 진입 - 터미널을 이용
// 1. pod init - Podfile 생성
// 2. Vim Podfile - Podfile 열기
// 3. i를 눌러 Insert(삽입)
// 4. pod 'Firebase/Auth'
// 5. esc 누르고 wq 엔터 누르면 Podfile 수정 후 저장됨
// 6. 프젝 파일 경로로 돌아오면 pod install 명령어를 통해 SDK 다운받을 수 있음

 

 

 

 

CocoaPods을 통해 install 하게 되면 프젝명.xcworkspace로 켜야 정상 실행됨

 

 

 

AppDelegate에 Firebase를 import 시켜주고

didFinishLaunchingWithOptions 메서드에 FirebaseApp.configure()를 작성해 공유 인스턴스 구성 시켜줌

* didFinishLaunchingWithOptions: AppDelegate에게 실행 프로세스가 거의 완료되어 앱을 실행할 준비가 거의 완료되었음을 알리는 메서드

 

 

 

 

Authentication 시작하기

 

 

 

이메일/비밀번호를 활성화 하면 이메일로 인증할 수 있음

* 이메일 외에도 다양한 플랫폼으로도 인증 가능 

 

 

 

이메일/비밀번호 사용으로 설정 후 저장

* 하단에 이메일 링크는 이메일로 메일을 보내는 설정임

 

Xcode로 돌아와서 textField에 이메일/비밀번호를 입력하는 ViewController에 FirebaseAuth를 import해준다.

우리가 이메일과 비밀번호를 textField를 이용해 값을 받아 다음이나 확인 같은 버튼을 누르면 Firebase에 인증정보를 보내기때문에

확인/다음 버튼의 Action 함수에 추가해주어야함

email과 password는 textField에서 얻은 text의 값을 받음

FirebaseAuth SDK에서 제공하는 createUser메서드로 firebase 인증플랫폼에 데이터를 전달할 수 있음 

 

 

이메일과 비밀번호를 전달하면 Firebase Users창에서 확인 가능

 

 

 

로그인 버튼을 누르면 view가 push되고 push된 view에서 email을 확인하기 위해 label을 설정해보았다.

 

 

 

 

 

비밀번호를 잘못입력하거나 이메일,비밀번호 형식이 아닐때에도 관리해야함

 

 

error가 발생할경우를 switch문으로 구분해

code가 17007- 즉 이미 가입한 계정일때는 아이디 생성이아니라 로그인을 해야함

*debugPrint 메서드로 error를 검색해보면 code가 17007인 것을 알 수 있음 

loginUser 메서드를 만들어 로그인 할 수 있도록함

signIn 메서드를 통해 로그인할 수 있음

로그인을 하는 경우에도 에러가 있을 수 있어 error 조건문을 생성하고 아닐 경우 ViewController를 push 하도록함

 

 

 

 

아닐 경우 error.localizedDescription을 에러메시지라벨로 보여 줄 것임

 

localizedDescription - 에러내용을 설명해 줌

 

 

error.localizedDescription 예시

 

 

 

 

 

로그아웃

signOut 함수를 이용해 로그아웃

에러처리를 위한 through함수이기 때문에 do try catch를 이용