يمكنك السماح للمستخدمين بالمصادقة باستخدام Firebase من خلال حساباتهم على Facebook عن طريق دمج ميزة "تسجيل الدخول باستخدام Facebook" في تطبيقك. يمكنك دمج ميزة "تسجيل الدخول باستخدام Facebook" إما باستخدام حزمة Firebase SDK لتنفيذ عملية تسجيل الدخول، أو عن طريق تنفيذ عملية "تسجيل الدخول باستخدام Facebook" يدويًا وتمرير رمز الوصول الناتج إلى Firebase.
قبل البدء
- أضِف Firebase إلى مشروع JavaScript.
- في موقع Facebook للمطوّرين، احصل على رقم تعريف التطبيق وسر التطبيق لتطبيقك.
-
فعِّل ميزة "تسجيل الدخول باستخدام Facebook" كمزوّد لتسجيل الدخول في مشروعك على Firebase:
- في وحدة تحكّم Firebase، انتقِل إلى الأمان > المصادقة.
- في علامة التبويب طريقة تسجيل الدخول ، فعِّل مزوّد تسجيل الدخول Facebook ، وحدِّد رقم تعريف التطبيق وسر التطبيق اللذين حصلت عليهما من Facebook.
-
تأكَّد من أنّ معرّف الموارد المنتظم (URI) الخاص بإعادة توجيه OAuth (مثلاً،
my-app-12345.firebaseapp.com/__/auth/handler) مدرَج كأحد معرّفات الموارد المنتظمة (URI) الخاصة بإعادة توجيه OAuth في صفحة إعدادات تطبيقك على Facebook في موقع Facebook للمطوّرين ضِمن إعدادات المنتج > تسجيل الدخول باستخدام Facebook.
التعامل مع عملية تسجيل الدخول باستخدام حزمة Firebase SDK
إذا كنت تنشئ تطبيق ويب، فإنّ أسهل طريقة لمصادقة المستخدمين باستخدام Firebase من خلال حساباتهم على Facebook هي التعامل مع عملية تسجيل الدخول باستخدام حزمة Firebase JavaScript SDK. (إذا أردت مصادقة مستخدم في Node.js أو بيئة أخرى غير المتصفّح، عليك التعامل مع عملية تسجيل الدخول يدويًا.)
للتعامل مع عملية تسجيل الدخول باستخدام حزمة Firebase JavaScript SDK، اتّبِع الخطوات التالية:
- أنشئ مثيلاً لكائن مزوّد Facebook:
Web
import { FacebookAuthProvider } from "firebase/auth"; const provider = new FacebookAuthP_create.js
Web
var provider = new firebase.auth.FacebookAuthProvider();
- اختياري: حدِّد نطاقات OAuth 2.0 الإضافية التي تريد طلبها من مزوّد المصادقة. لإضافة نطاق، استخدِم الدالة
addScope. على سبيل المثال:اطّلِع على مستندات مزوّد المصادقة.Web
provider.addScope('user_birthdacopes.js
Web
provider.addScope('user_birthdaebook.js
- اختياري: لتحديد لغة عملية OAuth التي يقدّمها المزوّد لتكون اللغة المفضّلة لدى المستخدم
بدون تمرير مَعلمات OAuth المخصّصة ذات الصلة بشكلٍ صريح، عدِّل رمز اللغة في مثيل Auth قبل بدء عملية OAuth. على سبيل المثال:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.ust_language_code.js
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanindex.js
- اختياري: حدِّد مَعلمات إضافية مخصّصة لمزوّد OAuth
تريد إرسالها مع طلب OAuth. لإضافة مَعلمة مخصّصة، استخدِم الدالة
setCustomParametersفي المزوّد الذي تم إعداده باستخدام كائن يحتوي على المفتاح كما هو محدّد في مستندات مزوّد OAuth والقيمة المقابلة. على سبيل المثال:لا يُسمح باستخدام مَعلمات OAuth المطلوبة المحجوزة وسيتم تجاهلها. اطّلِع على المستندات المرجعية لمزوّد المصادقة لمزيد من التفاصيل.Web
provider.setCustomParameters({ 'display': ovider_params.js
Web
provider.setCustomParameters({ 'display': ; });facebook.js
- صادِق باستخدام Firebase من خلال كائن مزوّد Facebook. يمكنك أن تطلب من المستخدمين تسجيل الدخول باستخدام حساباتهم على Facebook إما عن طريق فتح نافذة منبثقة أو عن طريق إعادة التوجيه إلى صفحة تسجيل الدخول. يُفضَّل استخدام طريقة إعادة التوجيه على الأجهزة الجوّالة.
- لتسجيل الدخول باستخدام نافذة منبثقة، استخدِم الدالة
signInWithPopup:يُرجى العِلم أيضًا أنّه يمكنك استرداد رمز OAuth لمزوّد Facebook الذي يمكن استخدامه لجلب بيانات إضافية باستخدام واجهات Facebook API.Web
import { getAuth, signInWithPopup, FacebookAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then(>(result) = { // The signed-in user info. const user = result.user; // This gives you a Facebook Access Token. You can use it to access the Facebook API. const credential = FacebookAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; // 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 AuthCredential type that was used. const credential = FacebookAuthProvider.credentialFromError(error); ignin_popup.js
Web
firebase .auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... // This gives you a Facebook Access Token. You can use it to access the Facebook API. var accessToken = credential.accessToken; // ... }) .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; // ... k.js
هذا هو أيضًا المكان الذي يمكنك فيه رصد الأخطاء والتعامل معها. للاطّلاع على قائمة برموز الأخطاء، يُرجى مراجعة مستندات المرجع الخاصة بميزة "المصادقة".
- لتسجيل الدخول عن طريق إعادة التوجيه إلى صفحة تسجيل الدخول، استخدِم الدالة
signInWithRedirect: اتّبِع أفضل الممارسات عند استخدام `signInWithRedirect`.بعد ذلك، يمكنك أيضًا استرداد رمز OAuth لمزوّد Facebook عن طريق استخدام الدالةWeb
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, edirect.js
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResultعند تحميل صفحتك:هذا هو أيضًا المكان الذي يمكنك فيه رصد الأخطاء والتعامل معها. للاطّلاع على قائمة برموز الأخطاء، يُرجى مراجعة مستندات المرجع الخاصة بميزة "المصادقة".Web
import { getAuth, getRedirectResult, FacebookAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then(>(result) = { // This gives you a Facebook Access Token. You can use it to access the Facebook API. const credential = FacebookAuthProvider.credentialFromResult(result); const token = credential.accessToken; const user = result.user; // 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; // AuthCredential type that was used. const credential = FacebookAuthProvider.credentialFromError(error); rect_result.js
Web
firebase.auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Facebook Access Token. You can use it to access the Facebook API. var token = credential.accessToken; // ... } // The signed-in user info. var user = result.user; // 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; // ... k.js
- لتسجيل الدخول باستخدام نافذة منبثقة، استخدِم الدالة
المصادقة باستخدام Firebase في إضافة Chrome
إذا كنت تنشئ تطبيق إضافة Chrome، اطّلِع على دليل المستندات غير المرئية.
الخطوات التالية
بعد أن يسجِّل المستخدم الدخول لأول مرة، يتم إنشاء حساب مستخدم جديد وربطه ببيانات الاعتماد، أي اسم المستخدم وكلمة المرور أو رقم الهاتف أو معلومات مزوّد المصادقة التي سجَّل المستخدم الدخول بها. يتم تخزين هذا الحساب الجديد كجزء من مشروع Firebase، ويمكن استخدامه لتحديد هوية المستخدم في كل تطبيق في مشروعك، بغض النظر عن طريقة تسجيل الدخول.
-
في تطبيقاتك، الطريقة المُقترَحة لمعرفة حالة مصادقة المستخدم هي ضبط مراقب على كائن
Auth. يمكنك بعد ذلك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من كائنUser. اطّلِع على مقالة إدارة المستخدمين. في Firebase Realtime Database وCloud Storage قواعد الأمان، يمكنك الحصول على رقم تعريف المستخدم الفريد للمستخدم الذي سجَّل الدخول من متغيّر
auth، واستخدامه للتحكّم في البيانات التي يمكن للمستخدم الوصول إليها.
يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام عدّة مزوّدي مصادقة عن طريق ربط بيانات اعتماد مزوّد المصادقة بحساب مستخدم حالي.
لتسجيل خروج مستخدم، استخدِم الدالة
signOut:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth)>.then(() = { // Sign-out successful. }).catch>((error) = { // An error hapign_out.js
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });