يمكنك السماح للمستخدمين بالمصادقة من خلال Firebase باستخدام حساباتهم على Facebook. من خلال دمج تسجيل الدخول إلى Facebook في تطبيقك. يمكنك دمج معلومات تسجيل الدخول إلى Facebook. إما باستخدام Firebase SDK لتنفيذ إجراءات تسجيل الدخول، أو عن طريق تسجيل الدخول إلى Facebook يدويًا وتمرير رمز الدخول الناتج إلى Firebase.
قبل البدء
- أضِف Firebase إلى مشروع JavaScript.
- على Facebook for Developers الموقع، احصل على معرّف التطبيق وسر التطبيق لتطبيقك.
- تفعيل تسجيل الدخول إلى Facebook:
- في وحدة تحكُّم Firebase، افتح قسم المصادقة.
- في علامة التبويب طريقة تسجيل الدخول، فعِّل تسجيل الدخول إلى Facebook وحدد رقم تعريف التطبيق وسر التطبيق الذي حصلت عليه من Facebook.
- بعد ذلك، تأكَّد من أنّ معرّف الموارد المنتظم (URI) لإعادة توجيه OAuth (مثلاً
my-app-12345.firebaseapp.com/__/auth/handler
) هو أحد معرّفات الموارد المنتظمة (URI) لإعادة توجيه OAuth في صفحة إعدادات تطبيق Facebook على Facebook for Developers على الرابط إعدادات المنتج > إعدادات تسجيل الدخول إلى Facebook.
معالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase
أسهل طريقة لمصادقة المستخدمين في حال إنشاء تطبيق ويب من خلال Firebase باستخدام حساباتهم على Facebook هي التعامل مع تدفق تسجيل الدخول حزمة SDK لـ Firebase JavaScript. (إذا كنت تريد مصادقة مستخدم في Node.js أو بيئة أخرى لا تستند إلى المتصفح، فيجب معالجة تدفق تسجيل الدخول يدويًا).
لمعالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لJavaScript لمنصّة Firebase، اتّبِع الخطوات التالية: الخطوات:
- أنشئ مثيلاً لكائن موفِّر Facebook:
Web
import { FacebookAuthProvider } from "firebase/auth"; const provider = new FacebookAuthProvider();
Web
var provider = new firebase.auth.FacebookAuthProvider();
- اختياري: حدِّد نطاقات OAuth 2.0 الإضافية التي تريدها.
ترغب في طلبها من مُقدِّم خدمة المصادقة. لإضافة نطاق، اطلب
addScope
على سبيل المثال:Web
provider.addScope('user_birthday');
Web
provider.addScope('user_birthday');
- اختياري: لترجمة مسار 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.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
- اختياري: تحديد معلَمات إضافية لموفِّر OAuth
الذي تريد إرساله مع طلب OAuth. لإضافة معلمة مخصصة، طلب
setCustomParameters
على مقدِّم الخدمة الذي تم إعداده باستخدام عنصر يحتوي على المفتاح كما هو موضح في مستندات موفّر OAuth والقيمة المقابلة. على سبيل المثال:Web
provider.setCustomParameters({ 'display': 'popup' });
Web
provider.setCustomParameters({ 'display': 'popup' });
- يمكنك المصادقة مع Firebase باستخدام كائن موفّر Facebook. يمكنك
اطلب من المستخدمين تسجيل الدخول باستخدام حساباتهم على Facebook إما من خلال فتح
أو عبر إعادة التوجيه إلى صفحة تسجيل الدخول. طريقة إعادة التوجيه هي
ويفضلها على الأجهزة المحمولة.
- لتسجيل الدخول عبر نافذة منبثقة، اتصل بالرقم
signInWithPopup
: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); // ... });
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; // ... });
ويمكنك هنا أيضًا رصد الأخطاء ومعالجتها. للحصول على قائمة برموز الأخطاء، يمكنك الاطّلاع على المستندات المرجعية للمصادقة.
- لتسجيل الدخول عن طريق إعادة التوجيه إلى صفحة تسجيل الدخول، اتصل بالرقم
signInWithRedirect
: اتّبِع أفضل الممارسات عند استخدام "signInWithRedirect".Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
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); // ... });
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; // ... });
- لتسجيل الدخول عبر نافذة منبثقة، اتصل بالرقم
المصادقة باستخدام 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 happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });