يمكنك السماح للمستخدمين بالمصادقة باستخدام Firebase باستخدام حسابات GitHub من خلال دمج مصادقة GitHub في تطبيقك. يمكنك دمج مصادقة GitHub إما باستخدام حزمة تطوير البرامج (SDK) Firebase لتنفيذ عملية تسجيل الدخول، أو من خلال تنفيذ عملية GitHub OAuth 2.0 يدويًا ونقل رمز تمييز الدخول الناتج إلى Firebase.
قبل البدء
- أضِف Firebase إلى مشروع JavaScript.
- في وحدة تحكّم Firebase، افتح قسم Auth.
- في علامة التبويب طريقة تسجيل الدخول، فعِّل موفِّر GitHub.
- أضِف معرّف العميل وسر العميل من وحدة تحكّم المطوّر الخاصة بهذا الموفِّر إلى
إعدادات الموفِّر:
- سجِّل تطبيقك كتطبيق مطوّر على GitHub واحصل على معرِّف العميل وسر العميل لتطبيقك في OAuth 2.0.
- تأكَّد من ضبط معرّف الموارد المنتظم لإعادة التوجيه في بروتوكول OAuth (مثل
my-app-12345.firebaseapp.com/__/auth/handler
) في عنوان URL لطلب إعادة التفويض في صفحة إعدادات تطبيقك على إعدادات تطبيق GitHub.
- انقر على حفظ.
التعامل مع عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase
إذا كنت بصدد إنشاء تطبيق ويب، فإنّ أسهل طريقة لمصادقة المستخدمين باستخدام Firebase باستخدام حساباتهم على GitHub هي معالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لـ JavaScript في Firebase. (إذا كنت تريد مصادقة مستخدم في Node.js أو بيئة أخرى غير المتصفّح، عليك معالجة عملية تسجيل الدخول يدويًا).
لمعالجة عملية تسجيل الدخول باستخدام حزمة Firebase JavaScript SDK، اتّبِع الخطوات التالية:
- أنشئ مثيلًا لعنصر مقدّم GitHub:
Web
import { GithubAuthProvider } from "firebase/auth"; const provider = new GithubAuthProvider();
Web
var provider = new firebase.auth.GithubAuthProvider();
- اختياري: حدِّد نطاقات OAuth 2.0 الإضافية التي تريد
طلبها من موفِّر المصادقة. لإضافة نطاق، اتصل بالرقم
addScope
. على سبيل المثال:Web
provider.addScope('repo');
Web
provider.addScope('repo');
- اختياري: حدِّد مَعلمات مخصّصة إضافية لمزوّد OAuth
تريد إرسالها مع طلب OAuth. لإضافة مَعلمة مخصّصة، استخدِم الدالة
setCustomParameters
في مقدّم الخدمة الذي تمّ إعداده مع عنصر يحتوي على المفتاح كما هو محدّد في مستندات مقدّم خدمة OAuth والقيمة المقابلة. على سبيل المثال:Web
provider.setCustomParameters({ 'allow_signup': 'false' });
Web
provider.setCustomParameters({ 'allow_signup': 'false' });
- يمكنك المصادقة باستخدام Firebase باستخدام كائن مزوّد GitHub. يمكنك
طلب تسجيل دخول المستخدمين باستخدام حساباتهم على GitHub إما من خلال فتح
نافذة منبثقة أو من خلال إعادة التوجيه إلى صفحة تسجيل الدخول. يُفضَّل استخدام أسلوب إعادة التوجيه
على الأجهزة الجوّالة.
- لتسجيل الدخول باستخدام نافذة منبثقة، يُرجى الاتصال على
signInWithPopup
:Web
import { getAuth, signInWithPopup, GithubAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // This gives you a GitHub Access Token. You can use it to access the GitHub API. const credential = GithubAuthProvider.credentialFromResult(result); const token = credential.accessToken; // The signed-in user info. 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; // The AuthCredential type that was used. const credential = GithubAuthProvider.credentialFromError(error); // ... });
Web
firebase .auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a GitHub Access Token. You can use it to access the GitHub 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; // ... });
يمكنك أيضًا من خلال هذا القسم رصد الأخطاء ومعالجتها. للحصول على قائمة برموز الأخطاء، يمكنك الاطّلاع على مستندات مرجعية حول المصادقة.
- لتسجيل الدخول من خلال إعادة التوجيه إلى صفحة تسجيل الدخول، يمكنك استدعاء
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, GithubAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { const credential = GithubAuthProvider.credentialFromResult(result); if (credential) { // This gives you a GitHub Access Token. You can use it to access the GitHub API. const token = credential.accessToken; // ... } // The signed-in user info. 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; // The AuthCredential type that was used. const credential = GithubAuthProvider.credentialFromError(error); // ... });
Web
firebase.auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a GitHub Access Token. You can use it to access the GitHub 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 من خلال حساب GitHub من خلال معالجة مسار تسجيل الدخول من خلال طلب نقاط نهاية GitHub OAuth 2.0:
- يمكنك دمج مصادقة GitHub في تطبيقك باتّباع مستندات المطوّر. في نهاية عملية تسجيل الدخول إلى GitHub، سيصلك رمز مميز للوصول عبر OAuth 2.0.
- إذا كنت بحاجة إلى تسجيل الدخول إلى تطبيق Node.js، أرسِل رمز دخول OAuth إلى تطبيق Node.js.
- بعد تسجيل دخول المستخدم بنجاح باستخدام GitHub، استبدِل رمز الوصول بروتوكول OAuth 2.0
ببيانات اعتماد Firebase:
Web
import { GithubAuthProvider } from "firebase/auth"; const credential = GithubAuthProvider.credential(token);
Web
var credential = firebase.auth.GithubAuthProvider.credential(token);
- يمكنك المصادقة باستخدام Firebase باستخدام بيانات اعتماد Firebase:
Web
import { getAuth, signInWithCredential } from "firebase/auth"; // Sign in with the credential from the user. const auth = getAuth(); signInWithCredential(auth, credential) .then((result) => { // Signed in // ... }) .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; // ... });
Web
// Sign in with the credential from the user. firebase.auth() .signInWithCredential(credential) .then((result) => { // Signed in // ... }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.email; // ... });
المصادقة باستخدام 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. });