Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

kullanıcı oluştur

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

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

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

Geçerli kullanıcıyı almanın ö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.

currentUser özelliğini kullanarak şu anda oturum açmış olan kullanıcıyı da alabilirsiniz. Bir kullanıcı oturum açmamışsa, 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 örneğinin özelliklerini kullanın FIRUser . Ö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) UserProfileChangeRequest 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

Bir kullanıcının e-posta adresini updateEmail yöntemiyle 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

Bir kullanıcıya sendEmailVerificationWithCompletion: yöntemiyle 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ından ö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.

Ek olarak, e-postayı göndermeden önce Auth ö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];

Kullanıcı parolası belirleyin

Bir kullanıcının parolasını updatePassword yöntemiyle belirleyebilirsiniz. Ö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

Bir kullanıcıya sendPasswordReset yöntemiyle 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ından ö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.

Ek olarak, e-postayı göndermeden önce Auth ö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 da parola sıfırlama e-postaları gönderebilirsiniz.

Bir kullanıcıyı sil

Bir kullanıcı hesabını delete yöntemiyle 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ı, Firebase konsolunun Kullanıcılar sayfasındaki Kimlik Doğrulama bölümünden de silebilirsiniz.

Kullanıcının kimliğini yeniden doğrulama

Bir hesabı silmek , birincil e-posta adresini ayarlamak ve parolayı değiştirmek gibi güvenlik açısından hassas bazı işlemler, kullanıcının yakın zamanda oturum açmış olması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 bilgileri 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 kullanıcı hesaplarını bir dosyadan Firebase projenize aktarabilirsiniz. Örneğin:

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