अपने ऐप्लिकेशन में Firebase SDK टूल का इस्तेमाल करके, सामान्य OAuth लॉगिन को इंटिग्रेट करें. इससे आपके उपयोगकर्ता, Yahoo जैसे OAuth प्रोवाइडर का इस्तेमाल करके Firebase से पुष्टि कर पाएंगे. इससे वे साइन-इन की पूरी प्रोसेस को पूरा कर पाएंगे.
शुरू करने से पहले
Yahoo खातों का इस्तेमाल करके उपयोगकर्ताओं को साइन इन करने की सुविधा देने के लिए, आपको सबसे पहले अपने Firebase प्रोजेक्ट के लिए, Yahoo को साइन-इन प्रोवाइडर के तौर पर चालू करना होगा:
- अपने JavaScript प्रोजेक्ट में Firebase जोड़ें.
- Firebase console में, सुरक्षा > पुष्टि पर जाएं.
- साइन-इन का तरीका टैब में जाकर, Yahoo साइन-इन की सुविधा देने वाली कंपनी को चालू करें.
-
उस सेवा देने वाली कंपनी की डेवलपर कंसोल से, क्लाइंट आईडी और क्लाइंट सीक्रेट को सेवा देने वाली कंपनी के कॉन्फ़िगरेशन में जोड़ें:
-
Yahoo OAuth क्लाइंट को रजिस्टर करने के लिए, Yahoo डेवलपर के दस्तावेज़ में दिया गया यह तरीका अपनाएं: Yahoo पर वेब ऐप्लिकेशन रजिस्टर करना.
OpenID Connect API की ये दो अनुमतियां ज़रूर चुनें:
profileऔरemail. -
इन कंपनियों के साथ ऐप्लिकेशन रजिस्टर करते समय, अपने प्रोजेक्ट के लिए
*.firebaseapp.comडोमेन को अपने ऐप्लिकेशन के रीडायरेक्ट डोमेन के तौर पर रजिस्टर करना न भूलें.
-
- सेव करें पर क्लिक करें.
Firebase SDK की मदद से, साइन-इन फ़्लो को मैनेज करना
अगर आपको कोई वेब ऐप्लिकेशन बनाना है, तो Yahoo खातों का इस्तेमाल करके Firebase के साथ अपने उपयोगकर्ताओं की पुष्टि करने का सबसे आसान तरीका यह है कि आप Firebase JavaScript SDK की मदद से, साइन-इन करने की पूरी प्रोसेस को मैनेज करें.
Firebase JavaScript SDK की मदद से साइन-इन फ़्लो को मैनेज करने के लिए, यह तरीका अपनाएं:
प्रोवाइडर आईडी yahoo.com का इस्तेमाल करके, OAuthProvider का इंस्टेंस बनाएं.
Web
import { OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('yahoo.com');
Web
var provider = new firebase.auth.OAuthProvider('yahoo.com');
वैकल्पिक: OAuth के उन अतिरिक्त कस्टम पैरामीटर के बारे में बताएं जिन्हें आपको OAuth अनुरोध के साथ भेजना है.
Web
provider.setCustomParameters({ // Prompt user to re-authenticate to Yahoo. prompt: 'login', // Localize to French. language: 'fr' });
Web
provider.setCustomParameters({ // Prompt user to re-authenticate to Yahoo. prompt: 'login', // Localize to French. language: 'fr' });
Yahoo के साथ काम करने वाले पैरामीटर के बारे में जानने के लिए, Yahoo OAuth का दस्तावेज़ देखें. ध्यान दें कि Firebase के लिए ज़रूरी पैरामीटर,
setCustomParameters()के साथ पास नहीं किए जा सकते. ये पैरामीटर client_id, redirect_uri, response_type, scope, और state हैं.ज़रूरी नहीं:
profileऔरemailके अलावा, OAuth 2.0 के अन्य स्कोप तय करें. ये वे स्कोप होने चाहिए जिनके लिए आपको पुष्टि करने की सेवा देने वाली कंपनी से अनुरोध करना है. अगर आपके ऐप्लिकेशन को Yahoo API से उपयोगकर्ता के निजी डेटा को ऐक्सेस करने की ज़रूरत है, तो आपको Yahoo Developer Console में एपीआई की अनुमतियां सेक्शन में जाकर, Yahoo API को ऐक्सेस करने की अनुमतियों का अनुरोध करना होगा. OAuth के लिए अनुरोध किए गए स्कोप, ऐप्लिकेशन की एपीआई अनुमतियों में पहले से कॉन्फ़िगर किए गए स्कोप से पूरी तरह मेल खाने चाहिए. उदाहरण के लिए, अगर उपयोगकर्ता के संपर्कों को पढ़ने/लिखने का ऐक्सेस मांगा जाता है और ऐप्लिकेशन के एपीआई की अनुमतियों में इसे पहले से कॉन्फ़िगर किया गया है, तो रीड ओनली OAuth स्कोपsdct-rके बजायsdct-wको पास करना होगा. ऐसा न करने पर, फ़्लो पूरा नहीं होगा और उपयोगकर्ता को गड़बड़ी का मैसेज दिखेगा.Web
// Request access to Yahoo Mail API. provider.addScope('mail-r'); // Request read/write access to user contacts. // This must be preconfigured in the app's API permissions. provider.addScope('sdct-w');
Web
// Request access to Yahoo Mail API. provider.addScope('mail-r'); // Request read/write access to user contacts. // This must be preconfigured in the app's API permissions. provider.addScope('sdct-w');
ज़्यादा जानने के लिए, Yahoo के स्कोप का दस्तावेज़ देखें.
OAuth प्रोवाइडर ऑब्जेक्ट का इस्तेमाल करके, Firebase से पुष्टि करें. अपने उपयोगकर्ताओं को Yahoo खातों से साइन इन करने के लिए कहा जा सकता है. इसके लिए, पॉप-अप विंडो खोलें या उन्हें साइन-इन पेज पर रीडायरेक्ट करें. मोबाइल डिवाइसों पर रीडायरेक्ट करने के लिए, इस तरीके का इस्तेमाल करना बेहतर होता है.
पॉप-अप विंडो की मदद से साइन इन करने के लिए,
signInWithPopupको कॉल करें:Web
import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // IdP data available in result.additionalUserInfo.profile // ... // Yahoo OAuth access token and ID token can be retrieved by calling: const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
firebase.auth().signInWithPopup(provider) .then((result) => { // IdP data available in result.additionalUserInfo.profile // ... /** @type {firebase.auth.OAuthCredential} */ const credential = result.credential; // Yahoo OAuth access token and ID token can be retrieved by calling: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. });
साइन-इन पेज पर रीडायरेक्ट करके साइन इन करने के लिए,
signInWithRedirectको कॉल करें:
signInWithRedirect,linkWithRedirectयाreauthenticateWithRedirectका इस्तेमाल करते समय, सबसे सही तरीके अपनाएं.firebase.auth().signInWithRedirect(provider);
जब उपयोगकर्ता साइन इन कर लेता है और पेज पर वापस आ जाता है, तब
getRedirectResultको कॉल करके, साइन इन करने का नतीजा पाया जा सकता है.Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
प्रोसेस पूरी होने के बाद, सेवा देने वाली कंपनी से जुड़ा OAuth आईडी टोकन और ऐक्सेस टोकन,
firebase.auth.UserCredentialऑब्जेक्ट से वापस पाया जा सकता है.OAuth ऐक्सेस टोकन का इस्तेमाल करके, Yahoo API को कॉल किया जा सकता है.
उदाहरण के लिए, प्रोफ़ाइल की बुनियादी जानकारी पाने के लिए, इस REST API को कॉल किया जा सकता है:
curl -i -H "Authorization: Bearer ACCESS_TOKEN" https://social.yahooapis.com/v1/user/YAHOO_USER_UID/profile?format=json
यहां
YAHOO_USER_UID, Yahoo उपयोगकर्ता का आईडी है. इसेfirebase.auth().currentUser.providerData[0].uidफ़ील्ड याresult.additionalUserInfo.profileसे वापस पाया जा सकता है.ऊपर दिए गए उदाहरणों में, साइन-इन फ़्लो पर फ़ोकस किया गया है. हालांकि, आपके पास
linkWithPopup/linkWithRedirectका इस्तेमाल करके, Yahoo सेवा देने वाली कंपनी को मौजूदा उपयोगकर्ता से लिंक करने का विकल्प भी होता है. उदाहरण के लिए, एक ही उपयोगकर्ता के लिए कई सेवा देने वाली कंपनियों को लिंक किया जा सकता है, ताकि वह इनमें से किसी भी कंपनी के खाते से साइन इन कर सके.Web
import { getAuth, linkWithPopup, OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('yahoo.com'); const auth = getAuth(); linkWithPopup(auth.currentUser, provider) .then((result) => { // Yahoo credential is linked to the current user. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
var provider = new firebase.auth.OAuthProvider('yahoo.com'); firebase.auth().currentUser.linkWithPopup(provider) .then((result) => { // Yahoo credential is linked to the current user. // IdP data available in result.additionalUserInfo.profile. // Yahoo OAuth access token can be retrieved by calling: // result.credential.accessToken // Yahoo OAuth ID token can be retrieved by calling: // result.credential.idToken }) .catch((error) => { // Handle error. });
इसी पैटर्न का इस्तेमाल
reauthenticateWithPopup/reauthenticateWithRedirectके साथ किया जा सकता है. इसका इस्तेमाल, संवेदनशील कार्रवाइयों के लिए नए क्रेडेंशियल पाने के लिए किया जा सकता है. इन कार्रवाइयों के लिए, हाल ही में लॉगिन करना ज़रूरी होता है.Web
import { getAuth, reauthenticateWithPopup, OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('yahoo.com'); const auth = getAuth(); reauthenticateWithPopup(auth.currentUser, provider) .then((result) => { // User is re-authenticated with fresh tokens minted and // should be able to perform sensitive operations like account // deletion and email or password update. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
var provider = new firebase.auth.OAuthProvider('yahoo.com'); firebase.auth().currentUser.reauthenticateWithPopup(provider) .then((result) => { // User is re-authenticated with fresh tokens minted and // should be able to perform sensitive operations like account // deletion and email or password update. // IdP data available in result.additionalUserInfo.profile. // Yahoo OAuth access token can be retrieved by calling: // result.credential.accessToken // Yahoo OAuth ID token can be retrieved by calling: // result.credential.idToken }) .catch((error) => { // Handle error. });
Chrome एक्सटेंशन में Firebase की मदद से पुष्टि करना
अगर आपको Chrome एक्सटेंशन ऐप्लिकेशन बनाना है, तो ऑफ़स्क्रीन दस्तावेज़ों से जुड़ी गाइड देखें.
अगले चरण
जब कोई नया उपयोगकर्ता पहली बार साइन इन करता है, तो एक नया उपयोगकर्ता खाता बनता है और वह उस क्रेडेंशियल से लिंक होता है जिसका इस्तेमाल करके उपयोगकर्ता ने साइन इन किया है. जैसे, उपयोगकर्ता नाम और पासवर्ड, फ़ोन नंबर या पुष्टि करने वाली कंपनी की जानकारी. यह नया खाता, आपके Firebase प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. इसका इस्तेमाल, आपके प्रोजेक्ट के हर ऐप्लिकेशन में किसी उपयोगकर्ता की पहचान करने के लिए किया जा सकता है. इससे कोई फ़र्क़ नहीं पड़ता कि उपयोगकर्ता ने किस तरह से साइन इन किया है.
-
अपने ऐप्लिकेशन में, उपयोगकर्ता की पुष्टि की स्थिति जानने का सबसे सही तरीका यह है कि
Authऑब्जेक्ट पर एक ऑब्ज़र्वर सेट करें. इसके बाद, आपकोUserऑब्जेक्ट से उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी मिल सकती है. उपयोगकर्ताओं को मैनेज करना लेख पढ़ें. अपने Firebase Realtime Database और Cloud Storage सुरक्षा नियमों में,
authवैरिएबल से साइन इन किए हुए उपयोगकर्ता का यूनीक User-ID पाया जा सकता है. साथ ही, इसका इस्तेमाल यह कंट्रोल करने के लिए किया जा सकता है कि कोई उपयोगकर्ता किस डेटा को ऐक्सेस कर सकता है.
उपयोगकर्ताओं को, पुष्टि करने वाली कई कंपनियों के क्रेडेंशियल का इस्तेमाल करके, आपके ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है. इसके लिए, पुष्टि करने वाली कंपनी के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करें.
किसी उपयोगकर्ता को साइन आउट करने के लिए,
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. });