Firebase'de Kullanıcıları Yönetin

Kullanıcı oluştur

createUserWithEmail:password:completion: yöntemini çağırarak veya Google Sign-In veya Facebook Login gibi birleşik bir kimlik sağlayıcı kullanarak bir kullanıcıda ilk kez oturum açarak Firebase projenizde yeni bir kullanıcı oluşturursunuz.

Ayrıca, Kullanıcılar sayfasındaki Firebase konsolunun Kimlik Doğrulama bölümünden parolayla doğrulanmış yeni kullanıcılar da oluşturabilirsiniz.

Şu anda oturum açmış olan kullanıcıyı alın

Geçerli kullanıcıyı edinmenin önerilen yolu, Auth nesnesine bir dinleyici ayarlamaktır:

Süratli

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

Amaç-C

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

Bir dinleyici kullanarak, geçerli kullanıcıyı aldığınızda Auth nesnesinin bir ara durumda (başlatma gibi) olmadığından emin olursunuz.

Ayrıca currentUser özelliğini kullanarak şu anda oturum açmış olan kullanıcıyı da alabilirsiniz. Bir kullanıcı oturum açmadıysa, currentUser sıfırdır:

Süratli

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

Amaç-C

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

Bir kullanıcının profilini alın

Bir kullanıcının profil bilgilerini almak için bir FIRUser örneğinin özelliklerini kullanın. Örneğin:

Süratli

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 += " "
  }
  // ...
}

Amaç-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;
  // ...
}

Bir kullanıcının sağlayıcıya özel profil bilgilerini alın

Bir kullanıcıya bağlı oturum açma sağlayıcılarından alınan profil bilgilerini almak için providerData özelliğini kullanın. Örneğin:

Süratli

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

Amaç-C

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

Bir kullanıcının profilini güncelleme

Bir kullanıcının temel profil bilgilerini (kullanıcının görünen adı ve profil fotoğrafı URL'si) FIRUserProfileChangeRequest sınıfıyla güncelleyebilirsiniz. Örneğin:

Süratli

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

Amaç-C

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

Bir kullanıcının e-posta adresini ayarlayın

updateEmail:completion: yöntemiyle bir kullanıcının e-posta adresini ayarlayabilirsiniz. Örneğin:

Süratli

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

Amaç-C

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

Bir kullanıcıya doğrulama e-postası gönderin

sendEmailVerificationWithCompletion: yöntemiyle bir kullanıcıya adres doğrulama e-postası gönderebilirsiniz. Örneğin:

Süratli

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

Amaç-C

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

Firebase konsolunun Kimlik Doğrulama bölümünde kullanılan e-posta şablonunu, E-posta Şablonları sayfasında özelleştirebilirsiniz. Firebase Yardım Merkezi'ndeki E-posta Şablonlarına bakın.

Bir doğrulama e-postası gönderirken uygulamaya geri yönlendirmek için durumu bir devam URL'si aracılığıyla iletmek de mümkündür.

Ayrıca, e-postayı göndermeden önce Yetkilendirme örneğindeki dil kodunu güncelleyerek doğrulama e-postasını yerelleştirebilirsiniz. Örneğin:

Süratli

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

Amaç-C

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

Bir kullanıcının şifresini belirleyin

updatePassword:completion: yöntemiyle bir kullanıcının parolasını ayarlayabilirsiniz. Örneğin:

Süratli

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

Amaç-C

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

Parola sıfırlama e-postası gönder

sendPasswordResetWithEmail:completion: yöntemiyle bir kullanıcıya parola sıfırlama e-postası gönderebilirsiniz. Örneğin:

Süratli

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

Amaç-C

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

Firebase konsolunun Kimlik Doğrulama bölümünde kullanılan e-posta şablonunu, E-posta Şablonları sayfasında özelleştirebilirsiniz. Firebase Yardım Merkezi'ndeki E-posta Şablonlarına bakın.

Parola sıfırlama e-postası gönderirken uygulamaya geri yönlendirmek için durumu bir devam URL'si aracılığıyla iletmek de mümkündür.

Ayrıca, e-postayı göndermeden önce Yetkilendirme örneğindeki dil kodunu güncelleyerek parola sıfırlama e-postasını yerelleştirebilirsiniz. Örneğin:

Süratli

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

Amaç-C

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

Firebase konsolundan parola sıfırlama e-postaları da gönderebilirsiniz.

Bir kullanıcıyı sil

deleteWithCompletion yöntemiyle bir kullanıcı hesabını silebilirsiniz. Örneğin:

Süratli

let user = Auth.auth().currentUser

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

Amaç-C

FIRUser *user = [FIRAuth auth].currentUser;

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

Kullanıcıları, Kullanıcılar sayfasındaki Firebase konsolunun Kimlik Doğrulama bölümünden de silebilirsiniz.

Bir kullanıcının kimliğini yeniden doğrulama

Bir hesabı silme , birincil e-posta adresi belirleme ve parola değiştirme gibi güvenlik açısından hassas bazı işlemler, kullanıcının yakın zamanda oturum açmasını gerektirir. Bu işlemlerden birini gerçekleştirirseniz ve kullanıcı çok uzun zaman önce oturum açmışsa, eylem FIRAuthErrorCodeCredentialTooOld hatasıyla başarısız oluyor. Bu olduğunda, kullanıcıdan yeni oturum açma kimlik bilgilerini alarak ve kimlik bilgilerini reauthenticate ileterek kullanıcının kimliğini yeniden doğrulayın. Örneğin:

Süratli

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.
  }
}

Amaç-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.
  }
}];

Kullanıcı hesaplarını içe aktar

Firebase CLI'nin auth:import komutunu kullanarak bir dosyadan kullanıcı hesaplarını Firebase projenize aktarabilirsiniz. Örneğin:

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