يمكنك السماح للمستخدمين بالمصادقة من خلال Firebase باستخدام موفّري OAuth مثل دليل Microsoft Azure Active Directory من خلال دمج معلومات تسجيل الدخول العامة عبر بروتوكول OAuth إلى تطبيقك باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase لتسجيل الدخول من البداية إلى النهاية.
قبل البدء
لتسجيل دخول المستخدمين باستخدام حسابات Microsoft (Azure Active Directory والملفات الشخصية حسابات Microsoft)، عليك أولاً تفعيل Microsoft كموفِّر تسجيل دخول إلى مشروعك على Firebase:
- أضِف Firebase إلى مشروع JavaScript.
- في وحدة تحكُّم Firebase، افتح قسم المصادقة.
- في علامة التبويب طريقة تسجيل الدخول، فعِّل موفّر خدمة Microsoft.
- أضِف Client-ID (معرّف العميل) وClient Secret (سر العميل) من وحدة تحكّم المطوّرين لدى هذا الموفّر إلى
إعداد موفِّر الخدمة:
- لتسجيل عميل OAuth من Microsoft، اتّبِع التعليمات الواردة في التشغيل السريع: تسجيل تطبيق باستخدام نقطة نهاية Azure Active Directory v2.0. تجدر الإشارة إلى أنّ نقطة النهاية هذه تتيح تسجيل الدخول باستخدام حسابات Microsoft الشخصية بالإضافة إلى Azure. حسابات Active Directory. مزيد من المعلومات حول الإصدار 2.0 من Azure Active Directory.
- عند تسجيل التطبيقات لدى مقدّمي الخدمات هؤلاء، احرص على تسجيل
نطاق
*.firebaseapp.com
لمشروعك كنطاق إعادة التوجيه التطبيق.
- انقر على حفظ.
معالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase
إذا كنت تنشئ تطبيق ويب، فإن أسهل طريقة لمصادقة المستخدمين باستخدام يمكن لمنصة Firebase استخدام حسابات Microsoft الخاصة بها لمعالجة عملية تسجيل الدخول بالكامل. باستخدام حزمة تطوير البرامج (SDK) لJavaScript لمنصة Firebase
لمعالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase JavaScript، اتّبِع الخطوات التالية:
إنشاء نسخة افتراضية من OAuthProvider باستخدام رقم تعريف الموفِّر microsoft.com
Web
import { OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('microsoft.com');
Web
var provider = new firebase.auth.OAuthProvider('microsoft.com');
اختياري: تحديد مَعلمات OAuth المخصَّصة الإضافية التي تريد الإرسال باستخدام طلب OAuth.
Web
provider.setCustomParameters({ // Force re-consent. prompt: 'consent', // Target specific email with login hint. login_hint: 'user@firstadd.onmicrosoft.com' });
Web
provider.setCustomParameters({ // Force re-consent. prompt: 'consent', // Target specific email with login hint. login_hint: 'user@firstadd.onmicrosoft.com' });
بالنسبة إلى المعلمات التي تدعمها Microsoft، يمكنك الاطلاع على مستندات Microsoft OAuth تجدر الإشارة إلى أنّه لا يمكنك تمرير المَعلمات المطلوبة في Firebase مع
setCustomParameters()
هذه المَعلمات هي client_id response_type وredirect_uri وstate وscope response_mode.السماح فقط للمستخدمين من مستأجر Azure AD معيّن بالتوقيع في التطبيق، إما اسم النطاق المناسب لمستأجر Azure AD أو يمكن استخدام المعرّف الفريد العالمي (GUID) للمستأجر. يمكن القيام بذلك من خلال تحديد "المستأجر" في كائن المعلمات المخصصة.
Web
provider.setCustomParameters({ // Optional "tenant" parameter in case you are using an Azure AD tenant. // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com' // or "common" for tenant-independent tokens. // The default value is "common". tenant: 'TENANT_ID' });
Web
provider.setCustomParameters({ // Optional "tenant" parameter in case you are using an Azure AD tenant. // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com' // or "common" for tenant-independent tokens. // The default value is "common". tenant: 'TENANT_ID' });
اختياري: حدِّد نطاقات OAuth 2.0 الإضافية بخلاف الملف الشخصي الأساسي الذي التي ترغب في طلبها من مُقدِّم خدمة المصادقة.
provider.addScope('mail.read'); provider.addScope('calendars.read');
لمزيد من المعلومات، يُرجى الرجوع إلى مستندات الموافقة وأذونات Microsoft
عليك المصادقة مع Firebase باستخدام كائن موفّر بروتوكول OAuth. يمكنك إرسال طلب للمستخدمين تسجيل الدخول باستخدام حساباتهم على Microsoft إما من خلال فتح أو عبر إعادة التوجيه إلى صفحة تسجيل الدخول. طريقة إعادة التوجيه هي ويفضلها على الأجهزة المحمولة.
- لتسجيل الدخول عبر نافذة منبثقة، اتصل بالرقم
signInWithPopup
:
Web
import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // User is signed in. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
firebase.auth().signInWithPopup(provider) .then((result) => { // IdP data available in result.additionalUserInfo.profile. // ... /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // OAuth access and id tokens can also be retrieved: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. });
- لتسجيل الدخول عن طريق إعادة التوجيه إلى صفحة تسجيل الدخول، اتصل بالرقم
signInWithRedirect
:
Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
وبعد أن يكمل المستخدم عملية تسجيل الدخول ثم يعود إلى الصفحة، يمكنك الحصول على نتيجة تسجيل الدخول من خلال الاتصال بـ
getRedirectResult
.Web
import { getAuth, getRedirectResult, OAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // User is signed in. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
firebase.auth().getRedirectResult() .then((result) => { // IdP data available in result.additionalUserInfo.profile. // ... /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // OAuth access and id tokens can also be retrieved: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. });
عند الإكمال بنجاح، يصبح رمز الدخول عبر OAuth المرتبط يمكن استرداد البيانات من عنصر
firebase.auth.UserCredential
عاد.باستخدام رمز الدخول عبر OAuth، يمكنك طلب Microsoft Graph API:
على سبيل المثال، للحصول على معلومات الملف الشخصي الأساسية، يمكنك استخدام واجهة برمجة تطبيقات REST التالية :
curl -i -H "Authorization: Bearer ACCESS_TOKEN" https://graph.microsoft.com/v1.0/me
وعلى عكس الموفّرين الآخرين الذين يتيحون مصادقة Firebase، لا تفعل Microsoft توفير عنوان URL لصورة، وبدلاً من ذلك، يتعين على البيانات الثنائية لصورة الملف الشخصي عن طريق Microsoft Graph API:
بالإضافة إلى رمز الدخول OAuth، فإن بروتوكول OAuth للمستخدم الرمز المميّز للمعرّف يمكن أيضًا استردادها من كائن
firebase.auth.UserCredential
. تشير رسالة الأشكال البيانية مطالبة واحدة (sub
) في الرمز المميّز لرقم التعريف هي مطالبة خاصة بالتطبيق ولن تتطابق مع المطالبة الموحّدة. معرّف المستخدم الذي يستخدمه مصادقة Firebase ويمكن الوصول إليه عبرuser.providerData[0].uid
يجب استخدام حقل المطالبةoid
بدلاً من ذلك. عند استخدام مستأجر Azure AD لتسجيل الدخول، ستكون المطالبة المقدَّمة عبرoid
دقيقة. تطابق. ومع ذلك، في حالة غير المستأجر، تتم تعبئة الحقلoid
. للاتحاد المتحدة رقم التعريف4b2eabcdefghijkl
، سيحتويoid
على نموذج.00000000-0000-0000-4b2e-abcdefghijkl
- لتسجيل الدخول عبر نافذة منبثقة، اتصل بالرقم
بينما تركز الأمثلة أعلاه على تدفقات تسجيل الدخول، لديك أيضًا القدرة على ربط موفر Microsoft بمستخدم حالي باستخدام
linkWithPopup
/linkWithRedirect
على سبيل المثال، يمكنك ربط عدة مواقع مقدمي الخدمة للمستخدم نفسه مما يسمح لهم بتسجيل الدخول باستخدام أي منهما.Web
import { getAuth, linkWithPopup, OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('microsoft.com'); const auth = getAuth(); linkWithPopup(auth.currentUser, provider) .then((result) => { // Microsoft credential is linked to the current user. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
var provider = new firebase.auth.OAuthProvider('microsoft.com'); firebase.auth().currentUser.linkWithPopup(provider) .then((result) => { // Microsoft credential is linked to the current user. // IdP data available in result.additionalUserInfo.profile. // OAuth access token can also be retrieved: // result.credential.accessToken // OAuth ID token can also be retrieved: // result.credential.idToken }) .catch((error) => { // Handle error. });
يمكن استخدام نفس النمط مع
reauthenticateWithPopup
/reauthenticateWithRedirect
التي يمكن استخدامها استرداد بيانات اعتماد جديدة للعمليات الحساسة التي تتطلب مؤخرًا تسجيل الدخول.Web
import { getAuth, reauthenticateWithPopup, OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('microsoft.com'); const auth = getAuth(); reauthenticateWithPopup(auth.currentUser, provider) .then((result) => { // User is re-authenticated with fresh tokens minted and // should be able to perform sensitive operations like account // deletion and email or password update. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
var provider = new firebase.auth.OAuthProvider('microsoft.com'); firebase.auth().currentUser.reauthenticateWithPopup(provider) .then((result) => { // User is re-authenticated with fresh tokens minted and // should be able to perform sensitive operations like account // deletion and email or password update. // IdP data available in result.additionalUserInfo.profile. // OAuth access token can also be retrieved: // result.credential.accessToken // OAuth ID token can also be retrieved: // result.credential.idToken }) .catch((error) => { // Handle error. });
المصادقة باستخدام 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. });