شما میتوانید با ادغام ورود فیسبوک در برنامه خود، به کاربران خود اجازه دهید تا با استفاده از حسابهای فیسبوک خود در فایربیس احراز هویت کنند. میتوانید ورود فیسبوک را یا با استفاده از کیت توسعه نرمافزار فایربیس برای انجام جریان ورود به سیستم، یا با انجام دستی جریان ورود فیسبوک و ارسال توکن دسترسی حاصل به فایربیس، ادغام کنید.
قبل از اینکه شروع کنی
- فایربیس را به پروژه جاوا اسکریپت خود اضافه کنید .
- در سایت فیسبوک برای توسعهدهندگان ، شناسه برنامه (App ID) و راز برنامه (App Secret) را برای برنامه خود دریافت کنید.
- ورود به سیستم فیسبوک را به عنوان ارائه دهنده ورود به سیستم برای پروژه Firebase خود فعال کنید:
- در کنسول Firebase ، به بخش امنیت > احراز هویت بروید.
- در تب روش ورود ، ارائهدهنده ورود به سیستم فیسبوک را فعال کنید و شناسه برنامه (App ID) و راز برنامه (App Secret) را که از فیسبوک دریافت کردهاید، مشخص کنید.
- مطمئن شوید که آدرس اینترنتی تغییر مسیر OAuth شما (برای مثال،
my-app-12345.firebaseapp.com/__/auth/handler) به عنوان یکی از آدرسهای اینترنتی تغییر مسیر OAuth شما در صفحه تنظیمات برنامه فیسبوک شما در سایت فیسبوک برای توسعهدهندگان، در تنظیمات محصول > پیکربندی ورود به سیستم فیسبوک ، فهرست شده باشد.
مدیریت جریان ورود به سیستم با Firebase SDK
اگر در حال ساخت یک برنامه وب هستید، سادهترین راه برای احراز هویت کاربران خود با Firebase با استفاده از حسابهای فیسبوک آنها، مدیریت جریان ورود به سیستم با Firebase JavaScript SDK است. (اگر میخواهید یک کاربر را در Node.js یا محیط غیر مرورگر دیگری احراز هویت کنید، باید جریان ورود به سیستم را به صورت دستی مدیریت کنید.)
برای مدیریت جریان ورود به سیستم با استفاده از Firebase JavaScript SDK، مراحل زیر را دنبال کنید:
- یک نمونه از شیء ارائه دهنده فیسبوک ایجاد کنید:
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 احراز هویت کنید. میتوانید با باز کردن یک پنجره پاپ آپ یا با هدایت به صفحه ورود، کاربران خود را به ورود با حسابهای فیس بوکشان ترغیب کنید. روش هدایت در دستگاههای تلفن همراه ترجیح داده میشود.
- برای ورود به سیستم با یک پنجره پاپآپ، تابع
signInWithPopupرا فراخوانی کنید:همچنین توجه داشته باشید که میتوانید توکن OAuth ارائهدهنده فیسبوک را بازیابی کنید که میتواند برای دریافت دادههای اضافی با استفاده از 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
همچنین اینجا جایی است که میتوانید خطاها را دریافت و مدیریت کنید. برای مشاهدهی فهرستی از کدهای خطا، به مستندات مرجع احراز هویت (Auth Reference Docs) مراجعه کنید.
- برای ورود به سیستم با هدایت به صفحه ورود، تابع
signInWithRedirectرا فراخوانی کنید: هنگام استفاده از `signInWithRedirect` بهترین شیوهها را دنبال کنید.سپس، میتوانید با فراخوانیWeb
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, edirect.js
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResultهنگام بارگذاری صفحه، توکن OAuth ارائهدهنده فیسبوک را نیز بازیابی کنید:همچنین اینجا جایی است که میتوانید خطاها را دریافت و مدیریت کنید. برای مشاهدهی فهرستی از کدهای خطا، به مستندات مرجع احراز هویت (Auth Reference Docs) مراجعه کنید.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
اگر در حال ساخت یک برنامه افزونه کروم هستید، به راهنمای اسناد Offscreen مراجعه کنید.
مراحل بعدی
پس از اینکه کاربر برای اولین بار وارد سیستم میشود، یک حساب کاربری جدید ایجاد میشود و به اطلاعات احراز هویت - یعنی نام کاربری و رمز عبور، شماره تلفن یا اطلاعات ارائه دهنده مجوز - که کاربر با آن وارد سیستم شده است، پیوند داده میشود. این حساب جدید به عنوان بخشی از پروژه Firebase شما ذخیره میشود و میتواند برای شناسایی کاربر در هر برنامه در پروژه شما، صرف نظر از نحوه ورود کاربر، مورد استفاده قرار گیرد.
در برنامههای شما، روش توصیهشده برای اطلاع از وضعیت احراز هویت کاربر، تنظیم یک ناظر (observer) روی شیء
Authاست. سپس میتوانید اطلاعات اولیه پروفایل کاربر را از شیءUser) دریافت کنید. به بخش مدیریت کاربران (Manage Users) مراجعه کنید.در قوانین امنیتی پایگاه داده و Cloud Storage Firebase Realtime Database ، میتوانید شناسه کاربری منحصر به فرد کاربر وارد شده را از متغیر
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. });