आप अपने ऐप में GitHub प्रमाणीकरण को एकीकृत करके अपने उपयोगकर्ताओं को उनके GitHub खातों का उपयोग करके Firebase से प्रमाणित करने दे सकते हैं। आप साइन-इन प्रवाह को पूरा करने के लिए या तो GitHub OAuth 2.0 प्रवाह को मैन्युअल रूप से चलाने और परिणामी एक्सेस टोकन को Firebase पर पास करके GitHub प्रमाणीकरण को एकीकृत कर सकते हैं।
शुरू करने से पहले
- अपने जावास्क्रिप्ट प्रोजेक्ट में फायरबेस जोड़ें ।
- फायरबेस कंसोल में, ऑथ सेक्शन खोलें।
- साइन इन विधि टैब पर, GitHub प्रदाता को सक्षम करें।
- उस प्रदाता के डेवलपर कंसोल से क्लाइंट आईडी और क्लाइंट सीक्रेट को प्रदाता कॉन्फ़िगरेशन में जोड़ें:
- अपने ऐप को GitHub पर एक डेवलपर एप्लिकेशन के रूप में पंजीकृत करें और अपने ऐप का OAuth 2.0 क्लाइंट आईडी और क्लाइंट सीक्रेट प्राप्त करें।
- सुनिश्चित करें कि आपका फायरबेस OAuth रीडायरेक्ट URI (उदाहरण के लिए
my-app-12345.firebaseapp.com/__/auth/handler
) आपके GitHub ऐप के कॉन्फ़िगरेशन पर आपके ऐप के सेटिंग पेज में आपके प्राधिकरण कॉलबैक URL के रूप में सेट है।
- सहेजें पर क्लिक करें.
फायरबेस एसडीके के साथ साइन-इन प्रवाह को संभालें
यदि आप एक वेब ऐप बना रहे हैं, तो अपने उपयोगकर्ताओं को उनके GitHub खातों का उपयोग करके फायरबेस के साथ प्रमाणित करने का सबसे आसान तरीका फायरबेस जावास्क्रिप्ट एसडीके के साथ साइन-इन प्रवाह को संभालना है। (यदि आप Node.js या अन्य गैर-ब्राउज़र वातावरण में किसी उपयोगकर्ता को प्रमाणित करना चाहते हैं, तो आपको साइन-इन प्रवाह को मैन्युअल रूप से संभालना होगा।)
फायरबेस जावास्क्रिप्ट एसडीके के साथ साइन-इन प्रवाह को संभालने के लिए, इन चरणों का पालन करें:
- GitHub प्रदाता ऑब्जेक्ट का एक उदाहरण बनाएं:
Web modular API
import { GithubAuthProvider } from "firebase/auth"; const provider = new GithubAuthProvider();
Web namespaced API
var provider = new firebase.auth.GithubAuthProvider();
- वैकल्पिक : अतिरिक्त OAuth 2.0 स्कोप निर्दिष्ट करें जिन्हें आप प्रमाणीकरण प्रदाता से अनुरोध करना चाहते हैं। दायरा जोड़ने के लिए,
addScope
पर कॉल करें। उदाहरण के लिए:प्रमाणीकरण प्रदाता दस्तावेज़ देखें.Web modular API
provider.addScope('repo');
Web namespaced API
provider.addScope('repo');
- वैकल्पिक : अतिरिक्त कस्टम OAuth प्रदाता पैरामीटर निर्दिष्ट करें जिन्हें आप OAuth अनुरोध के साथ भेजना चाहते हैं। एक कस्टम पैरामीटर जोड़ने के लिए, आरंभिक प्रदाता पर
setCustomParameters
एक ऑब्जेक्ट के साथ कॉल करें जिसमें OAuth प्रदाता दस्तावेज़ और संबंधित मान द्वारा निर्दिष्ट कुंजी हो। उदाहरण के लिए:आरक्षित आवश्यक OAuth पैरामीटर की अनुमति नहीं है और उन्हें अनदेखा कर दिया जाएगा। अधिक विवरण के लिए प्रमाणीकरण प्रदाता संदर्भ देखें।Web modular API
provider.setCustomParameters({ 'allow_signup': 'false' });
Web namespaced API
provider.setCustomParameters({ 'allow_signup': 'false' });
- GitHub प्रदाता ऑब्जेक्ट का उपयोग करके फ़ायरबेस से प्रमाणित करें। आप अपने उपयोगकर्ताओं को पॉप-अप विंडो खोलकर या साइन-इन पेज पर रीडायरेक्ट करके अपने GitHub खातों से साइन इन करने के लिए प्रेरित कर सकते हैं। मोबाइल उपकरणों पर रीडायरेक्ट विधि को प्राथमिकता दी जाती है।
- पॉप-अप विंडो से साइन इन करने के लिए,
signInWithPopup
पर कॉल करें:यह भी ध्यान दें कि आप GitHub प्रदाता के OAuth टोकन को पुनः प्राप्त कर सकते हैं जिसका उपयोग GitHub API का उपयोग करके अतिरिक्त डेटा लाने के लिए किया जा सकता है।Web modular API
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 namespaced API
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 modular API
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web namespaced API
firebase.auth().signInWithRedirect(provider);
getRedirectResult
पर कॉल करके GitHub प्रदाता के OAuth टोकन को भी पुनः प्राप्त कर सकते हैं:यह वह जगह भी है जहां आप त्रुटियों को पकड़ और संभाल सकते हैं। त्रुटि कोड की सूची के लिए प्रामाणिक संदर्भ दस्तावेज़ पर एक नज़र डालें।Web modular API
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 namespaced API
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 OAuth 2.0 एंडपॉइंट पर कॉल करके साइन-इन प्रवाह को संभालकर GitHub खाते का उपयोग करके फायरबेस के साथ प्रमाणित भी कर सकते हैं:
- डेवलपर के दस्तावेज़ का पालन करके GitHub प्रमाणीकरण को अपने ऐप में एकीकृत करें। GitHub साइन-इन प्रवाह के अंत में, आपको OAuth 2.0 एक्सेस टोकन प्राप्त होगा।
- यदि आपको Node.js एप्लिकेशन पर साइन इन करने की आवश्यकता है, तो Node.js एप्लिकेशन को OAuth एक्सेस टोकन भेजें।
- उपयोगकर्ता द्वारा GitHub के साथ सफलतापूर्वक साइन इन करने के बाद, फायरबेस क्रेडेंशियल के लिए OAuth 2.0 एक्सेस टोकन का आदान-प्रदान करें:
Web modular API
import { GithubAuthProvider } from "firebase/auth"; const credential = GithubAuthProvider.credential(token);
Web namespaced API
var credential = firebase.auth.GithubAuthProvider.credential(token);
- फ़ायरबेस क्रेडेंशियल का उपयोग करके फ़ायरबेस से प्रमाणित करें:
Web modular API
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 namespaced API
// 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; // ... });
Chrome एक्सटेंशन में फ़ायरबेस से प्रमाणित करें
यदि आप Chrome एक्सटेंशन ऐप बना रहे हैं, तो आपको अपनी Chrome एक्सटेंशन आईडी जोड़नी होगी:
- अपना प्रोजेक्ट फायरबेस कंसोल में खोलें।
- प्रमाणीकरण अनुभाग में, साइन-इन विधि पृष्ठ खोलें।
- अधिकृत डोमेन की सूची में निम्नलिखित की तरह एक यूआरआई जोड़ें:
chrome-extension://CHROME_EXTENSION_ID
क्रोम एक्सटेंशन के लिए केवल पॉपअप ऑपरेशन ( signInWithPopup
, linkWithPopup
, और reauthenticateWithPopup
) उपलब्ध हैं, क्योंकि क्रोम एक्सटेंशन HTTP रीडायरेक्ट का उपयोग नहीं कर सकते हैं। आपको इन तरीकों को ब्राउज़र एक्शन पॉपअप के बजाय बैकग्राउंड पेज स्क्रिप्ट से कॉल करना चाहिए, क्योंकि प्रमाणीकरण पॉपअप ब्राउज़र एक्शन पॉपअप को रद्द कर देगा। पॉपअप विधियों का उपयोग केवल मेनिफेस्ट V2 का उपयोग करने वाले एक्सटेंशन में किया जा सकता है। नया मेनिफेस्ट V3 केवल सेवा कर्मियों के रूप में पृष्ठभूमि स्क्रिप्ट की अनुमति देता है, जो पॉपअप ऑपरेशन बिल्कुल भी नहीं कर सकता है।
अपने Chrome एक्सटेंशन की मेनिफेस्ट फ़ाइल में सुनिश्चित करें कि आप https://apis.google.com
URL को content_security_policy
अनुमति सूची में जोड़ें।
अगले कदम
किसी उपयोगकर्ता द्वारा पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बनाया जाता है और क्रेडेंशियल्स से लिंक किया जाता है - यानी, उपयोगकर्ता नाम और पासवर्ड, फोन नंबर, या ऑथ प्रदाता जानकारी - जिस उपयोगकर्ता के साथ साइन इन किया जाता है। यह नया खाता आपके फायरबेस प्रोजेक्ट के हिस्से के रूप में संग्रहीत है, और इसका उपयोग आपके प्रोजेक्ट के प्रत्येक ऐप में उपयोगकर्ता की पहचान करने के लिए किया जा सकता है, भले ही उपयोगकर्ता कैसे भी साइन इन करता हो।
आपके ऐप्स में, आपके उपयोगकर्ता की प्रामाणिक स्थिति जानने का अनुशंसित तरीका
Auth
ऑब्जेक्ट पर एक पर्यवेक्षक सेट करना है। फिर आपUser
ऑब्जेक्ट से उपयोगकर्ता की मूल प्रोफ़ाइल जानकारी प्राप्त कर सकते हैं। उपयोगकर्ता प्रबंधित करें देखें.अपने फायरबेस रीयलटाइम डेटाबेस और क्लाउड स्टोरेज सुरक्षा नियमों में, आप साइन-इन किए गए उपयोगकर्ता की अद्वितीय उपयोगकर्ता आईडी को
auth
वेरिएबल से प्राप्त कर सकते हैं, और इसका उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ता किस डेटा तक पहुंच सकता है।
किसी उपयोगकर्ता को साइन आउट करने के लिए, signOut
पर कॉल करें:
Web modular API
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web namespaced API
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });