사용자 만들기
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