Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Apple 플랫폼에서 Firebase 인증 시작하기

Firebase 인증을 사용하면 사용자가 이메일 주소 및 비밀번호 로그인을 비롯한 하나 이상의 로그인 방법과 Google 로그인 및 Facebook 로그인과 같은 연합 ID 공급자를 사용하여 앱에 로그인하도록 허용할 수 있습니다. 이 가이드는 이메일 주소와 비밀번호 로그인을 앱에 추가하는 방법을 보여줌으로써 Firebase 인증을 시작하는 방법을 안내합니다.

앱을 Firebase에 연결

  1. Firebase SDK를 설치합니다 .
  2. Firebase 콘솔 에서 Firebase 프로젝트에 앱을 추가합니다.

앱에 Firebase 인증 추가

Swift Package Manager를 사용하여 Firebase 종속 항목을 설치하고 관리합니다.

  1. Xcode에서 앱 프로젝트를 연 상태에서 File > Add Packages 로 이동합니다.
  2. 메시지가 표시되면 Firebase Apple 플랫폼 SDK 저장소를 추가합니다.
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Firebase 인증 라이브러리를 선택합니다.
  5. 완료되면 Xcode는 자동으로 백그라운드에서 종속성을 해결하고 다운로드하기 시작합니다.

(선택사항) Firebase 로컬 에뮬레이터 도구 모음으로 프로토타입 제작 및 테스트

앱이 사용자를 인증하는 방법에 대해 이야기하기 전에 인증 기능의 프로토타입을 만들고 테스트하는 데 사용할 수 있는 도구 모음인 Firebase 로컬 에뮬레이터 도구 모음을 소개하겠습니다. 인증 기술과 공급자 중에서 결정하거나, 인증 및 Firebase 보안 규칙을 사용하여 공개 및 비공개 데이터로 다양한 데이터 모델을 시도하거나, 로그인 UI 디자인의 프로토타입을 제작하는 경우 라이브 서비스를 배포하지 않고 로컬에서 작업할 수 있는 것이 좋습니다. .

인증 에뮬레이터는 앱이 에뮬레이트된 데이터베이스 콘텐츠 및 구성은 물론 선택적으로 에뮬레이트된 프로젝트 리소스(함수, 기타 데이터베이스 및 보안 규칙)와 상호 작용할 수 있도록 하는 로컬 에뮬레이터 도구 모음의 일부입니다.

인증 에뮬레이터를 사용하려면 몇 단계만 거치면 됩니다.

  1. 에뮬레이터에 연결하기 위해 앱의 테스트 구성에 코드 줄을 추가합니다.
  2. 로컬 프로젝트 디렉터리의 루트에서 firebase emulators:start 를 실행합니다.
  3. 대화형 프로토타이핑을 위해 로컬 에뮬레이터 도구 모음 UI를 사용하거나 비대화형 테스트를 위해 인증 에뮬레이터 REST API를 사용합니다.

자세한 가이드는 앱을 인증 에뮬레이터에 연결 에서 확인할 수 있습니다. 자세한 내용은 로컬 에뮬레이터 제품군 소개 를 참조하십시오.

이제 사용자를 인증하는 방법을 계속 살펴보겠습니다.

Firebase SDK 초기화

앱 대리자에서 먼저 Firebase SDK를 가져옵니다.

빠른

import FirebaseCore

목표-C

@import FirebaseCore;

그런 다음 application:didFinishLaunchingWithOptions: 메서드에서 FirebaseApp 개체를 초기화합니다.

빠른

// Use Firebase library to configure APIs
FirebaseApp.configure()

목표-C

// Use Firebase library to configure APIs
[FIRApp configure];

인증 상태 수신 대기

로그인한 사용자에 대한 정보가 필요한 앱의 각 뷰에 대해 리스너를 FIRAuth 개체에 연결합니다. 이 리스너는 사용자의 로그인 상태가 변경될 때마다 호출됩니다.

보기 컨트롤러의 viewWillAppear 메서드에 리스너를 연결합니다.

빠른

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

목표-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

그리고 뷰 컨트롤러의 viewWillDisappear 메서드에서 리스너를 분리합니다.

빠른

Auth.auth().removeStateDidChangeListener(handle!)

목표-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

신규 사용자 등록

신규 사용자가 이메일 주소와 암호를 사용하여 앱에 등록할 수 있는 양식을 만드십시오. 사용자가 양식을 작성하면 사용자가 제공한 이메일 주소와 암호를 확인한 다음 createUser 메서드에 전달합니다.

빠른

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

목표-C

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

기존 사용자 로그인

기존 사용자가 이메일 주소와 암호를 사용하여 로그인할 수 있는 양식을 만듭니다. 사용자가 양식을 완성하면 다음과 같이 signIn 메서드를 호출합니다.

빠른

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

목표-C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

사용자 정보 얻기

사용자가 성공적으로 로그인하면 사용자에 대한 정보를 얻을 수 있습니다. 예를 들어 인증 상태 수신기 에서 다음을 수행합니다.

빠른

if let user = user {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

목표-C

if (user) {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

다음 단계

다른 ID 공급자 및 익명 게스트 계정에 대한 지원을 추가하는 방법에 대해 알아보십시오.