iOS에서 비밀번호 기반 계정으로 Firebase에 인증하기

Firebase 인증을 사용해서 사용자가 이메일 계정과 비밀번호로 Firebase 인증을 처리할 수 있도록 하고, 앱의 비밀번호 기반 계정을 관리할 수도 있습니다.

시작하기 전에

  1. iOS 프로젝트에 Firebase를 추가합니다. Podfile에 다음 pod를 추가합니다.
    pod 'Firebase/Auth'
    
  2. 아직 Firebase 프로젝트에 앱을 연결하지 않았다면 Firebase 콘솔에서 연결합니다.
  3. 다음과 같이 이메일 및 비밀번호 로그인 방법을 사용 설정합니다.
    1. Firebase 콘솔에서 인증 섹션을 엽니다.
    2. 로그인 방법 탭에서 이메일/비밀번호 로그인 방법을 사용 설정하고 저장을 클릭합니다.

비밀번호 기반 계정 생성하기

비밀번호가 있는 신규 사용자 계정을 생성하려면 앱의 로그인 작업에서 다음 절차를 완료합니다.

  1. UIApplicationDelegate 하위 클래스에서 Firebase 모듈을 가져옵니다.

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  2. 일반적으로 애플리케이션의 application:didFinishLaunchingWithOptions: 메소드에서 FirebaseApp 공유 인스턴스를 구성합니다.

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  3. 신규 사용자가 앱의 가입 양식을 사용해 가입하고 나면 필요에 따라 앱에서 계정 유효성 검사 절차를 완료합니다. 검사 항목의 예로는 신규 계정의 비밀번호를 정확하게 입력했는지, 비밀번호가 복잡성 조건을 충족하는지 등이 있습니다.
  4. 다음과 같이 신규 사용자의 이메일 주소와 비밀번호를 createUserWithEmail:email:password:completion:에 전달하여 신규 계정을 생성합니다.

    Swift

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

    Objective-C

    [[FIRAuth auth] createUserWithEmail:email
                               password:password
                             completion:^(FIRUser *_Nullable user, NSError *_Nullable error) {
      // ...
    }];
    신규 계정 생성에 성공하면 해당 사용자가 로그인 처리되고, 콜백 메소드로 전달된 사용자 개체로부터 사용자의 계정 데이터를 가져올 수 있습니다.

이메일 주소와 비밀번호로 사용자 로그인 처리하기

비밀번호로 사용자 로그인을 처리하는 절차는 신규 계정을 생성하는 절차와 비슷합니다. 앱의 로그인 작업에서 다음 절차를 따르세요.

  1. UIApplicationDelegate 하위 클래스에서 Firebase 모듈을 가져옵니다.

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  2. 일반적으로 애플리케이션의 application:didFinishLaunchingWithOptions: 메소드에서 FirebaseApp 공유 인스턴스를 구성합니다.

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  3. 사용자가 앱에 로그인하면 다음과 같이 사용자의 이메일 주소와 비밀번호를 signInWithEmail:email:password:completion:에 전달합니다.

    Swift

    Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInWithEmail:_emailField.text
                           password:_passwordField.text
                         completion:^(FIRUser *user, NSError *error) {
      // ...
    }];
    사용자가 정상적으로 로그인하면 콜백 메소드로 전달된 사용자 개체로부터 사용자의 계정 데이터를 가져올 수 있습니다.

다음 단계

사용자가 처음으로 로그인하면 신규 사용자 계정이 생성되고 사용자 인증 정보(사용자가 로그인할 때 사용한 사용자 이름과 비밀번호, 전화번호 또는 인증 제공업체 정보)에 연결됩니다. 이 신규 계정은 Firebase 프로젝트에 저장되며 사용자의 로그인 방법과 무관하게 프로젝트 내의 모든 앱에서 사용자 본인 확인에 사용할 수 있습니다.

  • 앱에서 FIRUser 개체로부터 사용자의 기본 프로필 정보를 가져올 수 있습니다. 사용자 관리를 참고하세요.

  • Firebase 실시간 데이터베이스와 Cloud Storage 보안 규칙에서 auth 변수로부터 로그인한 사용자의 고유 사용자 ID를 가져온 후 이 ID를 통해 사용자의 데이터 액세스를 관리할 수 있습니다.

인증 제공업체의 사용자 인증 정보를 기존 사용자 계정에 연결하면 사용자들이 여러 인증 제공업체를 통해 앱에 로그인할 수 있습니다.

사용자를 로그아웃하려면 다음과 같이 signOut:을 호출합니다.

Swift

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print ("Error signing out: %@", signOutError)
}
  

Objective-C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

또한 모든 인증 오류에 대한 오류 처리 코드를 추가할 수도 있습니다. 오류 처리를 참조하세요.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.