المصادقة باستخدام Apple مع JavaScript

يمكنك السماح للمستخدمين بالمصادقة مع Firebase باستخدام معرّف Apple الخاص بهم، وذلك من خلال استخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase لتسجيل الدخول من خلال بروتوكول OAuth 2.0 الشامل.

قبل البدء

لتسجيل دخول المستخدمين باستخدام Apple، يجب أولاً ضبط ميزة "تسجيل الدخول باستخدام حساب Apple" على الموقع الإلكتروني للمطوّرين من Apple، ثم تفعيل Apple باعتبارها مقدّم خدمة تسجيل الدخول لمشروعك على Firebase.

الانضمام إلى برنامج مطوّري برامج Apple

لا يمكن إعداد ميزة "تسجيل الدخول باستخدام حساب Apple" إلّا من خلال أعضاء برنامج مطوّري Apple.

ضبط ميزة "تسجيل الدخول باستخدام حساب Apple"

على موقع Apple Developer، يمكنك اتّباع الخطوات التالية:

  1. اربط موقعك الإلكتروني بتطبيقك كما هو موضّح في القسم الأول من ضبط ميزة "تسجيل الدخول باستخدام حساب Apple" للويب. سجِّل عنوان URL التالي على أنّه عنوان URL للعرض عندما يُطلب منك ذلك:

    https://YOUR_FIREBASE_PROJECT_ID.firebaseapp.com/__/auth/handler

    يمكنك الحصول على رقم تعريف مشروع Firebase من خلال صفحة إعدادات "وحدة تحكُّم Firebase".

    عند الانتهاء، دوِّن معرّف الخدمة الجديد الذي ستحتاجه في القسم التالي.

  2. أنشئ مفتاحًا خاصًا لتسجيل الدخول باستخدام Apple. ستحتاج إلى المفتاح الخاص ورقم تعريف المفتاح الجديدين في القسم التالي.
  3. إذا كنت تستخدم أيًا من ميزات "مصادقة Firebase" التي ترسل الرسائل الإلكترونية إلى المستخدمين، بما في ذلك تسجيل الدخول باستخدام رابط البريد الإلكتروني، والتحقق من عنوان البريد الإلكتروني، وإبطال تغيير الحساب، وغيرها، يمكنك ضبط خدمة ترحيل البريد الإلكتروني الخاص من Apple وتسجيل noreply@YOUR_FIREBASE_PROJECT_ID.firebaseapp.com (أو نطاق نموذج البريد الإلكتروني المخصص) كي تتمكن Apple من ترحيل الرسائل الإلكترونية المُرسَلة من خلال مصادقة Firebase إلى عناوين بريد إلكتروني مخفية الهوية على Apple.

تفعيل Apple كموفِّر لتسجيل الدخول

  1. أضِف Firebase إلى مشروعك.
  2. في وحدة تحكُّم Firebase، افتح قسم المصادقة. في علامة التبويب طريقة تسجيل الدخول، فعِّل موفّر خدمة Apple. حدِّد رقم تعريف الخدمة الذي أنشأته في القسم السابق. بالإضافة إلى ذلك، في قسم إعداد مسار رمز OAuth، حدِّد رقم تعريف فريق Apple والمفتاح الخاص ورقم تعريف المفتاح اللذين أنشأتهما في القسم السابق.

الالتزام بمتطلبات البيانات المخفية الهوية من Apple

تتيح ميزة "تسجيل الدخول باستخدام حساب Apple" للمستخدمين خيار إخفاء هوية بياناتهم، بما في ذلك عناوين بريدهم الإلكتروني، عند تسجيل الدخول. المستخدمون الذين يحددون هذا الخيار لديهم عناوين بريد إلكتروني بالنطاق privaterelay.appleid.com. عند استخدام ميزة "تسجيل الدخول باستخدام حساب Apple" في تطبيقك، عليك الالتزام بأيّ سياسات سارية للمطوّرين أو بنود من Apple في ما يتعلّق بمعرّفات Apple المجهولة الهوية هذه.

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

  • ربط عنوان بريد إلكتروني بمعرّف Apple مجهول الهوية أو العكس بالعكس.
  • ربط رقم هاتف بمعرّف Apple مجهول الهوية أو العكس
  • ربط بيانات اعتماد غير مجهولة الهوية على وسائل التواصل الاجتماعي (Facebook أو Google وغير ذلك) بحساب Apple مجهول الهوية أو العكس

إنّ القائمة أعلاه ليست شاملة. يُرجى الرجوع إلى "اتفاقية ترخيص برنامج مطوّري البرامج من Apple" في قسم "الاشتراك" في حساب المطوِّر للتأكّد من أنّ تطبيقك يستوفي متطلبات Apple.

معالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase

إذا كنت تنشئ تطبيق ويب، إنّ أسهل طريقة لمصادقة المستخدمين من خلال Firebase باستخدام حساباتهم على Apple هي معالجة عملية تسجيل الدخول بالكامل باستخدام حزمة تطوير البرامج (SDK) لـ Firebase JavaScript.

للتعامل مع عملية تسجيل الدخول باستخدام حزمة SDK لـ Firebase JavaScript، اتّبِع الخطوات التالية:

  1. إنشاء نسخة افتراضية من OAuthProvider باستخدام معرّف الموفّر المقابل apple.com

    واجهة برمجة التطبيقات Web modular API

    import { OAuthProvider } from "firebase/auth";
    
    const provider = new OAuthProvider('apple.com');

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    var provider = new firebase.auth.OAuthProvider('apple.com');
  2. اختياري: حدِّد نطاقات OAuth 2.0 الإضافية غير التلقائية التي تريد طلبها من موفِّر المصادقة.

    واجهة برمجة التطبيقات Web modular API

    provider.addScope('email');
    provider.addScope('name');

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    provider.addScope('email');
    provider.addScope('name');

    يطلب Firebase تلقائيًا نطاقَي البريد الإلكتروني والاسم عند تفعيل حساب واحد لكل عنوان بريد إلكتروني. في حال تغيير هذا الإعداد إلى عدّة حسابات لكل عنوان بريد إلكتروني، لن يطلب Firebase أي نطاقات من Apple ما لم تحدّدها.

  3. اختياري: إذا كنت تريد عرض شاشة تسجيل الدخول في Apple بلغة غير الإنجليزية، اضبط المَعلمة locale. راجِع مستندات "تسجيل الدخول باستخدام حساب Apple" للاطّلاع على اللغات المتاحة.

    واجهة برمجة التطبيقات Web modular API

    provider.setCustomParameters({
      // Localize the Apple authentication screen in French.
      locale: 'fr'
    });

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    provider.setCustomParameters({
      // Localize the Apple authentication screen in French.
      locale: 'fr'
    });
  4. عليك المصادقة مع Firebase باستخدام كائن موفّر بروتوكول OAuth. يمكنك أن تطلب من المستخدمين تسجيل الدخول باستخدام حساباتهم على Apple إما من خلال فتح نافذة منبثقة أو إعادة التوجيه إلى صفحة تسجيل الدخول. ومفضلة طريقة إعادة التوجيه على الأجهزة المحمولة.

    • لتسجيل الدخول عبر نافذة منبثقة، اتصل بالرقم signInWithPopup():

      واجهة برمجة التطبيقات Web modular API

      import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // The signed-in user info.
          const user = result.user;
      
          // Apple credential
          const credential = OAuthProvider.credentialFromResult(result);
          const accessToken = credential.accessToken;
          const idToken = credential.idToken;
      
          // IdP data available using getAdditionalUserInfo(result)
          // ...
        })
        .catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // The credential that was used.
          const credential = OAuthProvider.credentialFromError(error);
      
          // ...
        });

      واجهة برمجة التطبيقات لمساحة الاسم على الويب

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // The signed-in user info.
          var user = result.user;
      
          // You can also get the Apple OAuth Access and ID Tokens.
          var accessToken = credential.accessToken;
          var idToken = credential.idToken;
      
          // IdP data available using getAdditionalUserInfo(result)
        // ...
        })
        .catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
      
          // ...
        });
    • لتسجيل الدخول عن طريق إعادة التوجيه إلى صفحة تسجيل الدخول، اتصل بالرقم signInWithRedirect():

    اتّبِع أفضل الممارسات عند استخدام signInWithRedirect أو linkWithRedirect أو reauthenticateWithRedirect.

    واجهة برمجة التطبيقات Web modular API

    import { getAuth, signInWithRedirect } from "firebase/auth";
    
    const auth = getAuth();
    signInWithRedirect(auth, provider);

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    firebase.auth().signInWithRedirect(provider);

    بعد أن يكمل المستخدم عملية تسجيل الدخول ثم يعود إلى الصفحة، يمكنك الحصول على نتيجة تسجيل الدخول من خلال الاتصال على getRedirectResult():

    واجهة برمجة التطبيقات Web modular API

    import { getAuth, getRedirectResult, OAuthProvider } from "firebase/auth";
    
    // Result from Redirect auth flow.
    const auth = getAuth();
    getRedirectResult(auth)
      .then((result) => {
        const credential = OAuthProvider.credentialFromResult(result);
        if (credential) {
          // You can also get the Apple OAuth Access and ID Tokens.
          const accessToken = credential.accessToken;
          const idToken = credential.idToken;
        }
        // The signed-in user info.
        const user = result.user;
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.customData.email;
        // The credential that was used.
        const credential = OAuthProvider.credentialFromError(error);
    
        // ...
      });

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    // Result from Redirect auth flow.
    firebase
      .auth()
      .getRedirectResult()
      .then((result) => {
        if (result.credential) {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
    
          // You can get the Apple OAuth Access and ID Tokens.
          var accessToken = credential.accessToken;
          var idToken = credential.idToken;
    
          // IdP data available in result.additionalUserInfo.profile.
          // ...
        }
        // The signed-in user info.
        var user = result.user;
      })
      .catch((error) => {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
    
        // ...
      });

    ويمكنك هنا أيضًا رصد الأخطاء ومعالجتها. للحصول على قائمة برموز الأخطاء، يمكنك الاطّلاع على مرجع واجهة برمجة التطبيقات.

    لا توفّر Apple عنوان URL للصورة، على عكس مقدّمي الخدمة الآخرين المعتمَدين من خلال مصادقة Firebase.

    بالإضافة إلى ذلك، عندما يختار المستخدم عدم مشاركة عنوان بريده الإلكتروني مع التطبيق، ستوفّر Apple عنوان بريد إلكتروني فريدًا لهذا المستخدم (من النموذج xyz@privaterelay.appleid.com) تتم مشاركته مع التطبيق. إذا ضبطت خدمة ترحيل البريد الإلكتروني الخاص، تعيد Apple توجيه الرسائل الإلكترونية المُرسَلة إلى العنوان المجهول الهوية إلى عنوان البريد الإلكتروني الحقيقي للمستخدم.

    لا تشارك Apple معلومات المستخدم إلا مع التطبيقات، مثل الاسم المعروض، في المرة الأولى التي يسجّل فيها المستخدم الدخول. يخزّن Firebase عادةً الاسم المعروض في المرة الأولى التي يسجّل فيها المستخدم الدخول إلى Apple، وهو ما يمكنك الحصول عليه من خلال firebase.auth().currentUser.displayName. ومع ذلك، إذا سبق لك استخدام Apple لتسجيل دخول مستخدم إلى التطبيق بدون استخدام Firebase، لن توفّر Apple الاسم المعروض للمستخدم لمنصة Firebase.

إعادة المصادقة وربط الحساب

يمكن استخدام النمط نفسه مع reauthenticateWithPopup() وreauthenticateWithRedirect() اللذَين يمكنك استخدامهما لاسترداد بيانات اعتماد جديدة للعمليات الحسّاسة التي تتطلّب عملية تسجيل دخول حديثة:

واجهة برمجة التطبيقات Web modular API

import { getAuth, reauthenticateWithPopup, OAuthProvider } from "firebase/auth";

// Result from Redirect auth flow.
const auth = getAuth();
const provider = new OAuthProvider('apple.com');

reauthenticateWithPopup(auth.currentUser, provider)
  .then((result) => {
    // User is re-authenticated with fresh tokens minted and can perform
    // sensitive operations like account deletion, or updating their email
    // address or password.

    // The signed-in user info.
    const user = result.user;

    // You can also get the Apple OAuth Access and ID Tokens.
    const credential = OAuthProvider.credentialFromResult(result);
    const accessToken = credential.accessToken;
    const idToken = credential.idToken;

    // ...
  })
  .catch((error) => {
    // Handle Errors here.
    const errorCode = error.code;
    const errorMessage = error.message;
    // The email of the user's account used.
    const email = error.customData.email;
    // The credential that was used.
    const credential = OAuthProvider.credentialFromError(error);

    // ...
  });

واجهة برمجة التطبيقات لمساحة الاسم على الويب

const provider = new firebase.auth.OAuthProvider('apple.com');

firebase
  .auth()
  .currentUser
  .reauthenticateWithPopup(provider)
  .then((result) => {
    // User is re-authenticated with fresh tokens minted and can perform
    // sensitive operations like account deletion, or updating their email
    // address or password.
    /** @type {firebase.auth.OAuthCredential} */
    var credential = result.credential;

    // The signed-in user info.
    var user = result.user;
     // You can also get the Apple OAuth Access and ID Tokens.
    var accessToken = credential.accessToken;
    var idToken = credential.idToken;

    // IdP data available in result.additionalUserInfo.profile.
      // ...
  })
  .catch((error) => {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    // The email of the user's account used.
    var email = error.email;
    // The firebase.auth.AuthCredential type that was used.
    var credential = error.credential;

    // ...
  });

ويمكنك استخدام linkWithPopup() وlinkWithRedirect() لربط موفِّري هوية مختلفين بالحسابات الحالية.

ملاحظة: تشترط Apple الحصول على موافقة صريحة من المستخدمين قبل ربط حساباتهم على Apple ببيانات أخرى.

على سبيل المثال، لربط حساب Facebook بحساب Firebase الحالي، استخدِم رمز الدخول الذي حصلت عليه من تسجيل دخول المستخدم إلى Facebook:

واجهة برمجة التطبيقات Web modular API

import { getAuth, linkWithPopup, FacebookAuthProvider } from "firebase/auth";

const auth = getAuth();
const provider = new FacebookAuthProvider();
provider.addScope('user_birthday');

// Assuming the current user is an Apple user linking a Facebook provider.
linkWithPopup(auth.currentUser, provider)
    .then((result) => {
      // Facebook credential is linked to the current Apple user.
      // ...

      // The user can now sign in to the same account
      // with either Apple or Facebook.
    })
    .catch((error) => {
      // Handle error.
    });

واجهة برمجة التطبيقات لمساحة الاسم على الويب

const provider = new firebase.auth.FacebookAuthProvider();
provider.addScope('user_birthday');

// Assuming the current user is an Apple user linking a Facebook provider.
firebase.auth().currentUser.linkWithPopup(provider)
    .then((result) => {
      // Facebook credential is linked to the current Apple user.
      // Facebook additional data available in result.additionalUserInfo.profile,

      // Additional Facebook OAuth access token can also be retrieved.
      // result.credential.accessToken

      // The user can now sign in to the same account
      // with either Apple or Facebook.
    })
    .catch((error) => {
      // Handle error.
    });

المصادقة باستخدام Firebase في إحدى إضافات Chrome

إذا كنت تنشئ تطبيقًا لإضافة Chrome، يمكنك الاطّلاع على دليل المستندات خارج الشاشة.

تجدر الإشارة إلى أنّه لا يزال عليك إثبات ملكية النطاق الخاص في Apple بالطريقة نفسها المتّبعة لإثبات ملكية النطاق التلقائي firebaseapp.com:

http://auth.custom.example.com/.well-known/apple-developer-domain-association.txt

إبطال الرمز المميّز

تشترط Apple على التطبيقات التي تتيح إنشاء الحسابات أن تسمح للمستخدمين ببدء حذف حساباتهم داخل التطبيق، كما هو موضّح في إرشادات مراجعة App Store

لاستيفاء هذا الشرط، اتّبِع الخطوات التالية:

  1. تأكَّد من ملء قسم معرّف الخدمات وإعداد تدفق رمز OAuth في إعداد موفّر خدمة تسجيل الدخول باستخدام Apple، كما هو موضّح في قسم ضبط تسجيل الدخول باستخدام Apple.

  2. بما أنّ Firebase لا يخزِّن الرموز المميزة للمستخدم عند إنشاء المستخدمين من خلال ميزة "تسجيل الدخول باستخدام حساب Apple"، يجب أن تطلب من المستخدم تسجيل الدخول مرة أخرى قبل إبطال الرمز المميَّز وحذف الحساب.

    بعد ذلك، يمكنك الحصول على رمز الدخول إلى Apple OAuth من OAuthCredential، واستخدامه لطلب revokeAccessToken(auth, token) لإلغاء رمز الدخول إلى Apple OAuth.

    const provider = new OAuthProvider('apple.com');
    provider.addScope('email');
    provider.addScope('name');
    
    const auth = getAuth();
    signInWithPopup(auth, provider).then(result => {
      // Get the Apple OAuth access token.
      const credential = OAuthProvider.credentialFromResult(result);
      const accessToken = credential.accessToken;
    
      // Revoke the Apple OAuth access token.
      revokeAccessToken(auth, accessToken)
        .then(() => {
          // Token revoked.
    
          // Delete the user account.
          // ...
        })
        .catch(error => {
          // An error happened.
          // ...
        });
    });
    
  3. أخيرًا، احذف حساب المستخدم (وجميع البيانات المرتبطة به).

إعدادات متقدّمة: المصادقة باستخدام Firebase في Node.js

للمصادقة باستخدام Firebase في تطبيق Node.js:

  1. سجّل دخول المستخدم باستخدام حسابه على Apple واحصل على الرمز المميز لمعرّف Apple للمستخدم. يمكنك تحقيق ذلك بعدة طرق. على سبيل المثال، إذا كان تطبيق Node.js يتضمّن واجهة أمامية للمتصفّح:

    1. في الخلفية، أنشئ سلسلة عشوائية ("nonce") واحسب تجزئة SHA256 الخاصة بها. الرقم الخاص هو قيمة تُستخدم لمرة واحدة وتستخدمها للتحقق من رحلة ذهاب وعودة واحدة بين خادمك الخلفي وخوادم المصادقة من Apple.

      واجهة برمجة التطبيقات Web modular API

      const crypto = require("crypto");
      const string_decoder = require("string_decoder");
      
      // Generate a new random string for each sign-in
      const generateNonce = (length) => {
        const decoder = new string_decoder.StringDecoder("ascii");
        const buf = Buffer.alloc(length);
        let nonce = "";
        while (nonce.length < length) {
          crypto.randomFillSync(buf);
          nonce = decoder.write(buf);
        }
        return nonce.slice(0, length);
      };
      
      const unhashedNonce = generateNonce(10);
      
      // SHA256-hashed nonce in hex
      const hashedNonceHex = crypto.createHash('sha256')
        .update(unhashedNonce).digest().toString('hex');

      واجهة برمجة التطبيقات لمساحة الاسم على الويب

      const crypto = require("crypto");
      const string_decoder = require("string_decoder");
      
      // Generate a new random string for each sign-in
      const generateNonce = function(length) {
        const decoder = new string_decoder.StringDecoder("ascii");
        const buf = Buffer.alloc(length);
        var nonce = "";
        while (nonce.length < length) {
          crypto.randomFillSync(buf);
          nonce = decoder.write(buf);
        }
        return nonce.slice(0, length);
      };
      
      const unhashedNonce = generateNonce(10);
      
      // SHA256-hashed nonce in hex
      const hashedNonceHex = crypto.createHash('sha256')
        .update(unhashedNonce).digest().toString('hex');
    2. في صفحة تسجيل الدخول، حدِّد رقم nonce المجزّأ في إعدادات "تسجيل الدخول باستخدام Apple":

      <script src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js"></script>
      <div id="appleid-signin" data-color="black" data-border="true" data-type="sign in"></div>
      <script>
          AppleID.auth.init({
              clientId: YOUR_APPLE_CLIENT_ID,
              scope: 'name email',
              redirectURI: URL_TO_YOUR_REDIRECT_HANDLER,  // See the next step.
              state: '[STATE]',  // Optional value that Apple will send back to you
                                 // so you can return users to the same context after
                                 // they sign in.
              nonce: HASHED_NONCE  // The hashed nonce you generated in the previous step.
          });
      </script>
      
    3. يمكنك الحصول على الرمز المميز لمعرّف Apple من جهة خادم استجابة المصادقة التي تم نشرها:

      app.post('/redirect', (req, res) => {
        const savedState = req.cookies.__session;
        const code = req.body.code;
        const state = req.body.state;
        const appleIdToken = req.body.id_token;
        if (savedState !== state || !code) {
          res.status(403).send('403: Permission denied');
        } else {
          // Sign in with Firebase using appleIdToken. (See next step).
        }
      });
      

    راجِع أيضًا المقالة ضبط صفحة الويب لميزة "تسجيل الدخول باستخدام حساب Apple".

  2. بعد الحصول على الرمز المميز لمعرّف Apple للمستخدم، يمكنك استخدامه لإنشاء كائن "بيانات الاعتماد" ثم تسجيل دخول المستخدم باستخدام بيانات الاعتماد:

    واجهة برمجة التطبيقات Web modular API

    import { getAuth, signInWithCredential, OAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    
    // Build Firebase credential with the Apple ID token.
    const provider = new OAuthProvider('apple.com');
    const authCredential = provider.credential({
      idToken: appleIdToken,
      rawNonce: unhashedNonce,
    });
    
    // Sign in with credential form the Apple user.
    signInWithCredential(auth, authCredential)
      .then((result) => {
        // User signed in.
      })
      .catch((error) => {
        // An error occurred. If error.code == 'auth/missing-or-invalid-nonce',
        // make sure you're sending the SHA256-hashed nonce as a hex string
        // with your request to Apple.
        console.log(error);
      });

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    // Build Firebase credential with the Apple ID token.
    const provider = new firebase.auth.OAuthProvider('apple.com');
    const authCredential = provider.credential({
      idToken: appleIdToken,
      rawNonce: unhashedNonce,
    });
    
    // Sign in with credential form the Apple user.
    firebase.auth().signInWithCredential(authCredential)
      .then((result) => {
        // User signed in.
      })
      .catch((error) => {
        // An error occurred. If error.code == 'auth/missing-or-invalid-nonce',
        // make sure you're sending the SHA256-hashed nonce as a hex string
        // with your request to Apple.
        console.log(error);
      });

الخطوات اللاحقة

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

  • الطريقة التي ننصح بها في تطبيقاتك لمعرفة حالة المصادقة للمستخدم هي ضبط مراقب على كائن Auth. يمكنك بعد ذلك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من كائن User. يُرجى الاطّلاع على إدارة المستخدمين.

  • في قاعدة بيانات Firebase في الوقت الفعلي وقواعد أمان Cloud Storage، يمكنك الحصول على رقم تعريف المستخدم الفريد للمستخدم الذي سجّل الدخول من المتغيّر auth واستخدامه للتحكّم في البيانات التي يمكن للمستخدم الوصول إليها.

يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام عدة موفِّري مصادقة من خلال ربط بيانات اعتماد موفِّر المصادقة بحساب مستخدم حالي.

لتسجيل خروج مستخدم، يمكنك الاتصال بالرقم signOut:

واجهة برمجة التطبيقات Web modular API

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

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

واجهة برمجة التطبيقات لمساحة الاسم على الويب

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});