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

Firebase에서 사용자 관리

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

사용자 만들기

createUser 메서드를 호출하거나 Google 로그인 또는 Facebook 로그인 과 같은 제휴 ID 공급업체를 사용하여 처음으로 사용자를 로그인하여 Firebase 프로젝트에서 새 사용자를 만듭니다.

사용자 페이지에 있는 Firebase 콘솔 의 인증 섹션에서 비밀번호로 인증된 새 사용자를 만들 수도 있습니다.

현재 로그인한 사용자 가져오기

현재 사용자를 가져오는 권장 방법은 Auth 개체에 수신기를 설정하는 것입니다.

빠른

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

목표-C

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

리스너를 사용하면 현재 사용자를 가져올 때 Auth 객체가 초기화와 같은 중간 상태에 있지 않도록 할 수 있습니다.

currentUser 속성을 사용하여 현재 로그인한 사용자를 가져올 수도 있습니다. 사용자가 로그인하지 않은 경우 currentUser 는 nil입니다.

빠른

if Auth.auth().currentUser != nil {
  // User is signed in.
  // ...
} else {
  // No user is signed in.
  // ...
}

목표-C

if ([FIRAuth auth].currentUser) {
  // User is signed in.
  // ...
} else {
  // No user is signed in.
  // ...
}

사용자 프로필 가져오기

사용자의 프로필 정보를 얻으려면 FIRUser 인스턴스의 속성을 사용합니다. 예를 들어:

빠른

let user = Auth.auth().currentUser
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

FIRUser *user = [FIRAuth auth].currentUser;
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;
  // ...
}

사용자의 공급자별 프로필 정보 가져오기

사용자에게 연결된 로그인 공급자에서 검색된 프로필 정보를 가져오려면 providerData 속성을 사용합니다. 예를 들어:

빠른

let userInfo = Auth.auth().currentUser?.providerData[indexPath.row]
cell?.textLabel?.text = userInfo?.providerID
// Provider-specific UID
cell?.detailTextLabel?.text = userInfo?.uid

목표-C

id<FIRUserInfo> userInfo = [FIRAuth auth].currentUser.providerData[indexPath.row];
cell.textLabel.text = [userInfo providerID];
// Provider-specific UID
cell.detailTextLabel.text = [userInfo uid];

사용자 프로필 업데이트

UserProfileChangeRequest 클래스를 사용하여 사용자의 기본 프로필 정보(사용자의 표시 이름 및 프로필 사진 URL)를 업데이트할 수 있습니다. 예를 들어:

빠른

let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = displayName
changeRequest?.commitChanges { error in
  // ...
}

목표-C

FIRUserProfileChangeRequest *changeRequest = [[FIRAuth auth].currentUser profileChangeRequest];
changeRequest.displayName = userInput;
[changeRequest commitChangesWithCompletion:^(NSError *_Nullable error) {
  // ...
}];

사용자의 이메일 주소 설정

updateEmail 메소드로 사용자의 이메일 주소를 설정할 수 있습니다. 예를 들어:

빠른

Auth.auth().currentUser?.updateEmail(to: email) { error in
  // ...
}

목표-C

[[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

사용자에게 확인 이메일 보내기

sendEmailVerificationWithCompletion: 메소드를 사용하여 사용자에게 주소 확인 이메일을 보낼 수 있습니다. 예를 들어:

빠른

Auth.auth().currentUser?.sendEmailVerification { error in
  // ...
}

목표-C

[[FIRAuth auth].currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) {
  // ...
}];

이메일 템플릿 페이지에서 Firebase 콘솔 의 인증 섹션에 사용되는 이메일 템플릿을 맞춤설정할 수 있습니다. Firebase 도움말 센터에서 이메일 템플릿 을 참조하세요.

확인 이메일을 보낼 때 계속 URL 을 통해 상태를 전달하여 앱으로 다시 리디렉션할 수도 있습니다.

또한 이메일을 보내기 전에 Auth 인스턴스에서 언어 코드를 업데이트하여 확인 이메일을 현지화할 수 있습니다. 예를 들어:

빠른

Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()

목표-C

[FIRAuth auth].languageCode = @"fr";
// To apply the default app language instead of explicitly setting it.
// [[FIRAuth auth] useAppLanguage];

사용자 비밀번호 설정

updatePassword 메소드로 사용자 비밀번호를 설정할 수 있습니다. 예를 들어:

빠른

Auth.auth().currentUser?.updatePassword(to: password) { error in
  // ...
}

목표-C

[[FIRAuth auth].currentUser updatePassword:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

비밀번호 재설정 이메일 보내기

sendPasswordReset 메소드를 사용하여 비밀번호 재설정 이메일을 사용자에게 보낼 수 있습니다. 예를 들어:

빠른

Auth.auth().sendPasswordReset(withEmail: email) { error in
  // ...
}

목표-C

[[FIRAuth auth] sendPasswordResetWithEmail:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

이메일 템플릿 페이지에서 Firebase 콘솔 의 인증 섹션에 사용되는 이메일 템플릿을 맞춤설정할 수 있습니다. Firebase 도움말 센터에서 이메일 템플릿 을 참조하세요.

비밀번호 재설정 이메일을 보낼 때 계속 URL 을 통해 상태를 전달하여 앱으로 다시 리디렉션할 수도 있습니다.

또한 이메일을 보내기 전에 Auth 인스턴스에서 언어 코드를 업데이트하여 비밀번호 재설정 이메일을 현지화할 수 있습니다. 예를 들어:

빠른

Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()

목표-C

[FIRAuth auth].languageCode = @"fr";
// To apply the default app language instead of explicitly setting it.
// [[FIRAuth auth] useAppLanguage];

Firebase 콘솔에서 비밀번호 재설정 이메일을 보낼 수도 있습니다.

사용자 삭제

delete 메소드로 사용자 계정을 삭제할 수 있습니다. 예를 들어:

빠른

let user = Auth.auth().currentUser

user?.delete { error in
  if let error = error {
    // An error happened.
  } else {
    // Account deleted.
  }
}

목표-C

FIRUser *user = [FIRAuth auth].currentUser;

[user deleteWithCompletion:^(NSError *_Nullable error) {
  if (error) {
    // An error happened.
  } else {
    // Account deleted.
  }
}];

사용자 페이지에 있는 Firebase 콘솔 의 인증 섹션에서 사용자를 삭제할 수도 있습니다.

사용자 재인증

계정 삭제 , 기본 이메일 주소 설정비밀번호 변경 과 같은 일부 보안에 민감한 작업을 수행하려면 사용자가 최근에 로그인해야 합니다. 이러한 작업 중 하나를 수행하고 사용자가 너무 오래 전에 로그인한 경우 FIRAuthErrorCodeCredentialTooOld 오류와 함께 작업이 실패합니다. 이 경우 사용자로부터 새 로그인 자격 증명을 받고 자격 증명을 reauthenticate 에 전달하여 사용자를 다시 인증합니다. 예를 들어:

빠른

let user = Auth.auth().currentUser
var credential: AuthCredential

// Prompt the user to re-provide their sign-in credentials

user?.reauthenticate(with: credential) { error in
  if let error = error {
    // An error happened.
  } else {
    // User re-authenticated.
  }
}

목표-C

FIRUser *user = [FIRAuth auth].currentUser;
FIRAuthCredential *credential;

// Prompt the user to re-provide their sign-in credentials

[user reauthenticateWithCredential:credential completion:^(NSError *_Nullable error) {
  if (error) {
    // An error happened.
  } else {
    // User re-authenticated.
  }
}];

사용자 계정 가져오기

Firebase CLI의 auth:import 명령을 사용하여 파일에서 Firebase 프로젝트로 사용자 계정을 가져올 수 있습니다. 예를 들어:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14