आप अपने उपयोगकर्ताओं को उनके Google खातों का उपयोग करके फ़ायरबेस से प्रमाणित करने दे सकते हैं। आप या तो Google साइन-इन प्रवाह को पूरा करने के लिए फायरबेस एसडीके का उपयोग कर सकते हैं, या साइन इन विथ Google लाइब्रेरी का उपयोग करके मैन्युअल रूप से साइन-इन प्रवाह को पूरा कर सकते हैं और परिणामी आईडी टोकन को फायरबेस में भेज सकते हैं।
शुरू करने से पहले
- अपने जावास्क्रिप्ट प्रोजेक्ट में फायरबेस जोड़ें ।
- फ़ायरबेस कंसोल में Google को साइन-इन विधि के रूप में सक्षम करें:
- फायरबेस कंसोल में, ऑथ सेक्शन खोलें।
- साइन इन विधि टैब पर, Google साइन-इन विधि सक्षम करें और सहेजें पर क्लिक करें।
फायरबेस एसडीके के साथ साइन-इन प्रवाह को संभालें
यदि आप एक वेब ऐप बना रहे हैं, तो अपने उपयोगकर्ताओं को उनके Google खातों का उपयोग करके फायरबेस के साथ प्रमाणित करने का सबसे आसान तरीका फायरबेस जावास्क्रिप्ट एसडीके के साथ साइन-इन प्रवाह को संभालना है। (यदि आप Node.js या अन्य गैर-ब्राउज़र वातावरण में किसी उपयोगकर्ता को प्रमाणित करना चाहते हैं, तो आपको साइन-इन प्रवाह को मैन्युअल रूप से संभालना होगा।)
फायरबेस जावास्क्रिप्ट एसडीके के साथ साइन-इन प्रवाह को संभालने के लिए, इन चरणों का पालन करें:
- Google प्रदाता ऑब्जेक्ट का एक उदाहरण बनाएं:
Web modular API
import { GoogleAuthProvider } from "firebase/auth"; const provider = new GoogleAuthProvider();
Web namespaced API
var provider = new firebase.auth.GoogleAuthProvider();
- वैकल्पिक : अतिरिक्त OAuth 2.0 स्कोप निर्दिष्ट करें जिन्हें आप प्रमाणीकरण प्रदाता से अनुरोध करना चाहते हैं। दायरा जोड़ने के लिए,
addScope
पर कॉल करें। उदाहरण के लिए:प्रमाणीकरण प्रदाता दस्तावेज़ देखें.Web modular API
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
Web namespaced API
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
- वैकल्पिक : प्रासंगिक कस्टम OAuth पैरामीटर को स्पष्ट रूप से पारित किए बिना प्रदाता के OAuth प्रवाह को उपयोगकर्ता की पसंदीदा भाषा में स्थानीयकृत करने के लिए, OAuth प्रवाह शुरू करने से पहले Auth उदाहरण पर भाषा कोड को अपडेट करें। उदाहरण के लिए:
Web modular API
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 namespaced API
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
- वैकल्पिक : अतिरिक्त कस्टम OAuth प्रदाता पैरामीटर निर्दिष्ट करें जिन्हें आप OAuth अनुरोध के साथ भेजना चाहते हैं। एक कस्टम पैरामीटर जोड़ने के लिए, आरंभिक प्रदाता पर
setCustomParameters
एक ऑब्जेक्ट के साथ कॉल करें जिसमें OAuth प्रदाता दस्तावेज़ और संबंधित मान द्वारा निर्दिष्ट कुंजी हो। उदाहरण के लिए:आरक्षित आवश्यक OAuth पैरामीटर की अनुमति नहीं है और उन्हें अनदेखा कर दिया जाएगा। अधिक विवरण के लिए प्रमाणीकरण प्रदाता संदर्भ देखें।Web modular API
provider.setCustomParameters({ 'login_hint': 'user@example.com' });
Web namespaced API
provider.setCustomParameters({ 'login_hint': 'user@example.com' });
- Google प्रदाता ऑब्जेक्ट का उपयोग करके फ़ायरबेस से प्रमाणित करें। आप पॉप-अप विंडो खोलकर या साइन-इन पेज पर रीडायरेक्ट करके अपने उपयोगकर्ताओं को उनके Google खातों से साइन इन करने के लिए प्रेरित कर सकते हैं। मोबाइल उपकरणों पर रीडायरेक्ट विधि को प्राथमिकता दी जाती है।
- पॉप-अप विंडो से साइन इन करने के लिए,
signInWithPopup
पर कॉल करें:यह भी ध्यान दें कि आप Google प्रदाता के OAuth टोकन को पुनः प्राप्त कर सकते हैं जिसका उपयोग Google API का उपयोग करके अतिरिक्त डेटा लाने के लिए किया जा सकता है।Web modular API
import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // This gives you a Google Access Token. You can use it to access the Google API. const credential = GoogleAuthProvider.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 = GoogleAuthProvider.credentialFromError(error); // ... });
Web namespaced API
firebase.auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. You can use it to access the Google 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
पर कॉल करके Google प्रदाता का OAuth टोकन भी पुनः प्राप्त कर सकते हैं:यह वह जगह भी है जहां आप त्रुटियों को पकड़ और संभाल सकते हैं। त्रुटि कोड की सूची के लिए प्रामाणिक संदर्भ दस्तावेज़ पर एक नज़र डालें।Web modular API
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // This gives you a Google Access Token. You can use it to access Google APIs. const credential = GoogleAuthProvider.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 = GoogleAuthProvider.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 Google Access Token. You can use it to access the Google 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; // ... });
- पॉप-अप विंडो से साइन इन करने के लिए,
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. });