میتوانید با ادغام «ورود به سیستم Facebook» در برنامهتان، به کاربران اجازه دهید بااستفاده از حسابهای Facebook خود با Firebase اصالتسنجی کنند. میتوانید «ورود به سیستم Facebook» را بااستفاده از «کیت توسعه نرمافزار Firebase» برای انجام جریان ورود به سیستم، یا با انجام جریان «ورود به سیستم Facebook» بهصورت دستی و انتقال رمز دسترسی حاصل به Firebase ادغام کنید.
قبل از شروع
- Firebase را به پروژه جاوا اسکریپت خود اضافه کنید.
- در سایت Facebook for Developers، شناسه برنامه و رمز برنامه را برای برنامهتان دریافت کنید.
-
«ورود به سیستم با Facebook» را بهعنوان ارائهدهنده ورود به سیستم برای پروژه Firebase خود فعال کنید:
- در کنسول Firebase، به امنیت > اصالتسنجی بروید.
- در برگه روش ورود به سیستم، ارائهدهنده ورود به سیستم Facebook را فعال کنید و شناسه برنامه و رمز برنامه را که از Facebook دریافت کردهاید مشخص کنید.
-
مطمئن شوید که شناسه «URI هدایت OAuth» شما (برای مثال،
my-app-12345.firebaseapp.com/__/auth/handler) بهعنوان یکی از شناسههای «URI هدایت OAuth» در صفحه تنظیمات برنامه Facebook شما در سایت Facebook for Developers در پیکربندی تنظیمات محصول > ورود به سیستم Facebook فهرست شده باشد.
مدیریت جریان ورود به سیستم با «کیت توسعه نرمافزار Firebase»
اگر برنامه وب میسازید، سادهترین راه برای اصالتسنجی کاربران با Firebase بااستفاده از حسابهای Facebook آنها این است که جریان ورود به سیستم را با کیت توسعه نرمافزار Firebase JavaScript مدیریت کنید. (اگر میخواهید کاربری را در Node.js یا محیط غیرمرورگر دیگری اصالتسنجی کنید، باید جریان ورود به سیستم را بهصورت دستی مدیریت کنید.)
برای مدیریت جریان ورود به سیستم با «کیت توسعه نرمافزار جاوا اسکریپت 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 و مقدار مربوطه است فراخوانی کنید. برای مثال:پارامترهای OAuth الزامی رزروشده مجاز نیستند و نادیده گرفته خواهند شد. برای جزئیات بیشتر، مرجع ارائهدهنده اصالتسنجی را ببینید.Web
provider.setCustomParameters({ 'display': 'popup' });
Web
provider.setCustomParameters({ 'display': 'popup' });
- بااستفاده از شیء ارائهدهنده Facebook، با Firebase اصالتسنجی کنید. میتوانید
کاربرانتان را ترغیب کنید با حسابهای Facebook خود به سیستم وارد شوند، یا با باز کردن
پنجره بالاپری یا با هدایت کردن به صفحه ورود به سیستم. روش هدایت در دستگاههای همراه ترجیح داده میشود.
- برای ورود به سیستم با پنجره بالاپر، با
signInWithPopupتماس بگیرید:همچنین توجه داشته باشید که میتوانید نشان OAuth ارائهدهنده Facebook را بازیابی کنید که میتوان از آن برای واکشی دادههای اضافی بااستفاده از Facebook APIs استفاده کرد.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; // ... });
در اینجا میتوانید خطاها را نیز شناسایی و مدیریت کنید. برای مشاهده فهرست کدهای خطا، به اسناد مرجع Auth نگاهی بیندازید.
- برای ورود به سیستم با هدایت به صفحه ورود به سیستم،
signInWithRedirectرا فراخوانی کنید: هنگام استفاده از `signInWithRedirect`، روالهای مطلوب را دنبال کنید.سپس، میتوانید با فراخوانیWeb
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResultهنگام بار شدن صفحهتان، رمز OAuth ارائهدهنده Facebook را نیز بازیابی کنید:در اینجا میتوانید خطاها را نیز شناسایی و مدیریت کنید. برای مشاهده فهرست کدهای خطا، به اسناد مرجع Auth نگاهی بیندازید.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. });