إدارة المستخدمين في Firebase

قم بإنشاء مستخدم

إنشاء مستخدم جديد في مشروع Firebase عن طريق استدعاء createUserWithEmailAndPassword طريقة أو عن طريق تسجيل الدخول للمستخدم لأول مرة باستخدام موفر الهوية الاتحادية، مثل جوجل الدخول في أو الفيسبوك الدخول .

يمكنك أيضا إنشاء المستخدمين مصادقة كلمة سر جديدة من قسم مصادقة من وحدة التحكم Firebase ، على الصفحة المستخدمين، أو باستخدام SDK الادارية .

احصل على المستخدم المسجل حاليًا

الطريقة الموصى بها للحصول على المستخدم الحالي هي عن طريق تعيين مراقب على كائن Auth:

إصدار الويب 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
    // ...
  }
});

إصدار الويب 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
    // ...
  }
});

باستخدام مراقب ، فإنك تتأكد من أن كائن Auth ليس في حالة وسيطة - مثل التهيئة - عندما تحصل على المستخدم الحالي. عند استخدام signInWithRedirect ، و onAuthStateChanged ينتظر مراقب حتى getRedirectResult يقرر قبل اثار.

يمكنك أيضا الحصول على توقيع في الوقت الحالي المستخدم باستخدام currentUser الممتلكات. إذا لم يتم توقيع المستخدم في، currentUser لاغيا:

إصدار الويب 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.
}

إصدار الويب 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.
}

احصل على ملف تعريف المستخدم

للحصول على معلومات المستخدم الشخصية، واستخدام خصائص مثيل User . على سبيل المثال:

إصدار الويب 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;
}

إصدار الويب 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;
}

احصل على معلومات ملف التعريف الخاصة بموفر المستخدم

للحصول على المعلومات الشخصية التي تم استردادها من تسجيل الدخول مقدمي مرتبطة المستخدم، استخدم providerData الممتلكات. على سبيل المثال:

إصدار الويب 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);
  });
}

إصدار الويب 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);
  });
}

تحديث ملف تعريف المستخدم

يمكنك تحديث المعلومات الشخصية الأساسي المستخدم المستخدم في عرض اسم وصورة الملف الشخصي URL-مع updateProfile الأسلوب. على سبيل المثال:

إصدار الويب 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
  // ...
});

إصدار الويب 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
  // ...
});  

حدد عنوان البريد الإلكتروني للمستخدم

يمكنك تعيين عنوان البريد الإلكتروني للمستخدم مع updateEmail الأسلوب. على سبيل المثال:

إصدار الويب 9

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

إصدار الويب 8

const user = firebase.auth().currentUser;

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

إرسال بريد إلكتروني للتحقق للمستخدم

يمكنك إرسال البريد الإلكتروني التحقق من عنوان للمستخدم مع sendEmailVerification الأسلوب. على سبيل المثال:

إصدار الويب 9

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

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

إصدار الويب 8

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

يمكنك تخصيص قالب البريد الإلكتروني الذي يتم استخدامه في قسم مصادقة من وحدة التحكم Firebase ، على الصفحة قوالب البريد الإلكتروني. انظر قوالب البريد الإلكتروني في مركز المساعدة Firebase.

ومن الممكن أيضا لتمرير الدولة عن طريق مواصلة URL لإعادة توجيه إلى التطبيق عند إرسال البريد الإلكتروني التحقق.

بالإضافة إلى ذلك ، يمكنك ترجمة رسالة التحقق من خلال تحديث رمز اللغة على مثيل المصادقة قبل إرسال البريد الإلكتروني. على سبيل المثال:

إصدار الويب 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();

إصدار الويب 8

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

قم بتعيين كلمة مرور المستخدم

يمكنك تعيين كلمة مرور المستخدم مع updatePassword الأسلوب. على سبيل المثال:

إصدار الويب 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
  // ...
});

إصدار الويب 8

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

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

إرسال بريد إلكتروني لإعادة تعيين كلمة المرور

يمكنك إرسال رسالة بريد إلكتروني إعادة تعيين كلمة المرور للمستخدم مع sendPasswordResetEmail الأسلوب. على سبيل المثال:

إصدار الويب 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;
    // ..
  });

إصدار الويب 8

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

يمكنك تخصيص قالب البريد الإلكتروني الذي يتم استخدامه في قسم مصادقة من وحدة التحكم Firebase ، على الصفحة قوالب البريد الإلكتروني. انظر قوالب البريد الإلكتروني في مركز المساعدة Firebase.

ومن الممكن أيضا لتمرير الدولة عن طريق مواصلة URL لإعادة توجيه إلى التطبيق عند إرسال رسالة بريد إلكتروني إعادة تعيين كلمة المرور.

بالإضافة إلى ذلك ، يمكنك ترجمة البريد الإلكتروني لإعادة تعيين كلمة المرور عن طريق تحديث رمز اللغة في مثيل المصادقة قبل إرسال البريد الإلكتروني. على سبيل المثال:

إصدار الويب 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();

إصدار الويب 8

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

يمكنك أيضًا إرسال رسائل بريد إلكتروني لإعادة تعيين كلمة المرور من وحدة تحكم Firebase.

حذف مستخدم

يمكنك حذف حساب المستخدم مع delete الأسلوب. على سبيل المثال:

إصدار الويب 9

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

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

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

إصدار الويب 8

const user = firebase.auth().currentUser;

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

يمكنك أيضا للمستخدمين حذف من قسم مصادقة من وحدة التحكم Firebase ، على الصفحة المستخدمين.

إعادة مصادقة المستخدم

بعض إجراءات مثل الحساسة أمنيا كما حذف حساب ، وضع عنوان البريد الإلكتروني الرئيسي ، و تغيير كلمة المرور -require أن المستخدم قد وقعت مؤخرا في. إذا قمت بإجراء واحد من هذه الإجراءات، والمستعمل وقعت في وقتا طويلا قبل أن فشل العمل مع وجود خطأ. وعندما يحدث ذلك، وإعادة مصادقة المستخدم عن طريق الحصول على تسجيل الدخول الجديد أوراق اعتماد المستخدم وتمرير أوراق الاعتماد إلى reauthenticateWithCredential . على سبيل المثال:

إصدار الويب 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
  // ...
});

إصدار الويب 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
  // ...
});

استيراد حسابات المستخدمين

يمكنك استيراد حسابات المستخدمين من ملف في المشروع Firebase باستخدام Firebase CLI في auth:import الأوامر. على سبيل المثال:

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