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