Nutzer in Firebase verwalten

Erstellen Sie einen Benutzer

Sie erstellen einen neuen Benutzer in Ihrem Projekt Firebase durch die Aufruf createUserWithEmailAndPassword Methode oder zum ersten Mal in einem Benutzer der Unterzeichnung eines föderierten Identitätsprovider, wie der Verwendung von Google-Anmeldung oder Facebook Anmelden .

Sie können auch neue Passwort-authentifizierte Benutzer aus dem Abschnitt Authentifizierung der erstellen Firebase - Konsole , auf der Seite Benutzer oder durch die Verwendung von Admin SDK .

Holen Sie sich den aktuell angemeldeten Benutzer

Die empfohlene Methode zum Abrufen des aktuellen Benutzers besteht darin, einen Beobachter für das Auth-Objekt festzulegen:

Webversion 9

import { getAuth, onAuthStateChanged } from "firebase/auth";

const auth = getAuth();
onAuthStateChanged(auth, (user) => {
  if (user) {
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    const uid = user.uid;
    // ...
  } else {
    // User is signed out
    // ...
  }
});

Webversion 8

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    var uid = user.uid;
    // ...
  } else {
    // User is signed out
    // ...
  }
});

Durch die Verwendung eines Beobachters stellen Sie sicher, dass sich das Auth-Objekt nicht in einem Zwischenzustand (z. B. Initialisierung) befindet, wenn Sie den aktuellen Benutzer abrufen. Wenn Sie signInWithRedirect , die onAuthStateChanged Beobachter wartet , bis getRedirectResult Entschlüsse vor dem Auslösen.

Sie können auch die derzeit angemeldeten Nutzer erhalten durch die Verwendung der currentUser Eigenschaft. Wenn ein Benutzer nicht angemeldet ist, currentUser ist null:

Webversion 9

import { getAuth } from "firebase/auth";

const auth = getAuth();
const user = auth.currentUser;

if (user) {
  // User is signed in, see docs for a list of available properties
  // https://firebase.google.com/docs/reference/js/firebase.User
  // ...
} else {
  // No user is signed in.
}

Webversion 8

const user = firebase.auth().currentUser;

if (user) {
  // User is signed in, see docs for a list of available properties
  // https://firebase.google.com/docs/reference/js/firebase.User
  // ...
} else {
  // No user is signed in.
}

Holen Sie sich ein Benutzerprofil

Um ein Benutzerprofilinformation zu erhalten, verwenden Sie die Eigenschaften einer Instanz von User . Zum Beispiel:

Webversion 9

import { getAuth } from "firebase/auth";

const auth = getAuth();
const user = auth.currentUser;
if (user !== null) {
  // The user object has basic properties such as display name, email, etc.
  const displayName = user.displayName;
  const email = user.email;
  const photoURL = user.photoURL;
  const emailVerified = user.emailVerified;

  // 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 User.getToken() instead.
  const uid = user.uid;
}

Webversion 8

const user = firebase.auth().currentUser;
if (user !== null) {
  // The user object has basic properties such as display name, email, etc.
  const displayName = user.displayName;
  const email = user.email;
  const photoURL = user.photoURL;
  const emailVerified = user.emailVerified;

  // 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 User.getToken() instead.
  const uid = user.uid;
}

Rufen Sie die anbieterspezifischen Profilinformationen eines Benutzers ab

Um die Informationen aus der Anmelde-Anbieter zu einem Benutzer verknüpft abgerufen zu erhalten, verwenden Sie die providerData Eigenschaft. Zum Beispiel:

Webversion 9

import { getAuth } from "firebase/auth";

const auth = getAuth();
const user = auth.currentUser;

if (user !== null) {
  user.providerData.forEach((profile) => {
    console.log("Sign-in provider: " + profile.providerId);
    console.log("  Provider-specific UID: " + profile.uid);
    console.log("  Name: " + profile.displayName);
    console.log("  Email: " + profile.email);
    console.log("  Photo URL: " + profile.photoURL);
  });
}

Webversion 8

const user = firebase.auth().currentUser;

if (user !== null) {
  user.providerData.forEach((profile) => {
    console.log("Sign-in provider: " + profile.providerId);
    console.log("  Provider-specific UID: " + profile.uid);
    console.log("  Name: " + profile.displayName);
    console.log("  Email: " + profile.email);
    console.log("  Photo URL: " + profile.photoURL);
  });
}

Aktualisieren Sie das Profil eines Benutzers

Sie können ein Benutzerprofil Grundinformation-Anzeigenamen und Profilfoto URL-mit dem Benutzer aktualisieren die updateProfile Methode. Zum Beispiel:

Webversion 9

import { getAuth, updateProfile } from "firebase/auth";
const auth = getAuth();
updateProfile(auth.currentUser, {
  displayName: "Jane Q. User", photoURL: "https://example.com/jane-q-user/profile.jpg"
}).then(() => {
  // Profile updated!
  // ...
}).catch((error) => {
  // An error occurred
  // ...
});

Webversion 8

const user = firebase.auth().currentUser;

user.updateProfile({
  displayName: "Jane Q. User",
  photoURL: "https://example.com/jane-q-user/profile.jpg"
}).then(() => {
  // Update successful
  // ...
}).catch((error) => {
  // An error occurred
  // ...
});  

E-Mail-Adresse eines Benutzers festlegen

Sie können einen Benutzer die E-Mail - Adresse mit der eingestellten updateEmail Methode. Zum Beispiel:

Webversion 9

import { getAuth, updateEmail } from "firebase/auth";
const auth = getAuth();
updateEmail(auth.currentUser, "user@example.com").then(() => {
  // Email updated!
  // ...
}).catch((error) => {
  // An error occurred
  // ...
});

Webversion 8

const user = firebase.auth().currentUser;

user.updateEmail("user@example.com").then(() => {
  // Update successful
  // ...
}).catch((error) => {
  // An error occurred
  // ...
});

Senden Sie einem Benutzer eine Bestätigungs-E-Mail

Sie können eine Adresse Überprüfung E - Mail an einen Benutzer mit der schicken sendEmailVerification Methode. Zum Beispiel:

Webversion 9

import { getAuth, sendEmailVerification } from "firebase/auth";

const auth = getAuth();
sendEmailVerification(auth.currentUser)
  .then(() => {
    // Email verification sent!
    // ...
  });

Webversion 8

firebase.auth().currentUser.sendEmailVerification()
  .then(() => {
    // Email verification sent!
    // ...
  });

Sie können die E - Mail - Vorlage anpassen , die in Abschnitt Authentifizierung der verwendet wird , Firebase Konsole , auf der E - Mail - Vorlagen Seite. Siehe E - Mail - Vorlagen in Firebase - Hilfe.

Es ist auch möglich Zustand zu gelangen über eine URL weiterhin an den App umleiten zurück , wenn eine Überprüfung E - Mail.

Darüber hinaus können Sie die Bestätigungs-E-Mail lokalisieren, indem Sie den Sprachcode auf der Auth-Instanz aktualisieren, bevor Sie die E-Mail senden. Zum Beispiel:

Webversion 9

import { getAuth } from "firebase/auth";

const auth = getAuth();
auth.languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();

Webversion 8

firebase.auth().languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();

Passwort eines Benutzers festlegen

Sie können das Kennwort eines Benutzers mit der eingestellten updatePassword Methode. Zum Beispiel:

Webversion 9

import { getAuth, updatePassword } from "firebase/auth";

const auth = getAuth();

const user = auth.currentUser;
const newPassword = getASecureRandomPassword();

updatePassword(user, newPassword).then(() => {
  // Update successful.
}).catch((error) => {
  // An error ocurred
  // ...
});

Webversion 8

const user = firebase.auth().currentUser;
const newPassword = getASecureRandomPassword();

user.updatePassword(newPassword).then(() => {
  // Update successful.
}).catch((error) => {
  // An error ocurred
  // ...
});

Senden Sie eine E-Mail zum Zurücksetzen des Passworts

Sie können mit der einer Passwort - Reset - E - Mail an einen Benutzer senden sendPasswordResetEmail Methode. Zum Beispiel:

Webversion 9

import { getAuth, sendPasswordResetEmail } from "firebase/auth";

const auth = getAuth();
sendPasswordResetEmail(auth, email)
  .then(() => {
    // Password reset email sent!
    // ..
  })
  .catch((error) => {
    const errorCode = error.code;
    const errorMessage = error.message;
    // ..
  });

Webversion 8

firebase.auth().sendPasswordResetEmail(email)
  .then(() => {
    // Password reset email sent!
    // ..
  })
  .catch((error) => {
    var errorCode = error.code;
    var errorMessage = error.message;
    // ..
  });

Sie können die E - Mail - Vorlage anpassen , die in Abschnitt Authentifizierung der verwendet wird , Firebase Konsole , auf der E - Mail - Vorlagen Seite. Siehe E - Mail - Vorlagen in Firebase - Hilfe.

Es ist auch möglich Zustand zu gelangen über eine URL weiterhin an den App umleiten zurück , wenn das Zurücksetzen des Kennworts E - Mail zu senden.

Darüber hinaus können Sie die E-Mail zum Zurücksetzen des Kennworts lokalisieren, indem Sie den Sprachcode auf der Auth-Instanz aktualisieren, bevor Sie die E-Mail senden. Zum Beispiel:

Webversion 9

import { getAuth } from "firebase/auth";

const auth = getAuth();
auth.languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();

Webversion 8

firebase.auth().languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();

Sie können auch E-Mails zum Zurücksetzen des Passworts über die Firebase-Konsole senden.

Einen Benutzer löschen

Sie können ein Benutzerkonto mit dem Löschen delete Zum Beispiel:

Webversion 9

import { getAuth, deleteUser } from "firebase/auth";

const auth = getAuth();
const user = auth.currentUser;

deleteUser(user).then(() => {
  // User deleted.
}).catch((error) => {
  // An error ocurred
  // ...
});

Webversion 8

const user = firebase.auth().currentUser;

user.delete().then(() => {
  // User deleted.
}).catch((error) => {
  // An error ocurred
  // ...
});

Sie können auch löschen Benutzer aus dem Abschnitt Authentifizierung der Firebase - Konsole , auf der Seite Benutzer.

Einen Benutzer erneut authentifizieren

Einige sicherheitsrelevante Aktionen-wie ein Konto zu löschen , eine primäre E - Mail - Adresse einstellen und ein Passwort zu ändern -require , dass der Benutzer vor kurzem in unterzeichnet hat. Wenn Sie führen Sie eine dieser Aktionen, und der Benutzer vor zu lang unterzeichnet, das Aktion schlägt mit einem Fehler fehl. Wenn dies geschieht, erneut authentifiziert den Benutzer durch neue Anmelde in immer Anmeldeinformationen vom Benutzer und vorbei an die Anmeldeinformationen reauthenticateWithCredential . Zum Beispiel:

Webversion 9

import { getAuth, reauthenticateWithCredential } from "firebase/auth";

const auth = getAuth();
const user = auth.currentUser;

// TODO(you): prompt the user to re-provide their sign-in credentials
const credential = promptForCredentials();

reauthenticateWithCredential(user, credential).then(() => {
  // User re-authenticated.
}).catch((error) => {
  // An error ocurred
  // ...
});

Webversion 8

const user = firebase.auth().currentUser;

// TODO(you): prompt the user to re-provide their sign-in credentials
const credential = promptForCredentials();

user.reauthenticateWithCredential(credential).then(() => {
  // User re-authenticated.
}).catch((error) => {
  // An error ocurred
  // ...
});

Benutzerkonten importieren

Sie können mithilfe der Firebase CLI - Benutzerkonten aus einer Datei in Ihr Firebase - Projekt importieren auth:import - Befehls. Zum Beispiel:

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