JavaScript के साथ Google का इस्तेमाल करके पुष्टि करें

आपके पास यह विकल्प होता है कि लोग अपने Google खातों का इस्तेमाल करके, Firebase से पुष्टि कर सकें. Google में साइन-इन करने की प्रोसेस को पूरा करने के लिए, Firebase SDK का इस्तेमाल किया जा सकता है. इसके अलावा, 'Google से साइन इन करें' लाइब्रेरी का इस्तेमाल करके, साइन-इन की प्रोसेस को मैन्युअल तरीके से भी पूरा किया जा सकता है. इसके बाद, मिले आईडी टोकन को Firebase पर भेजा जा सकता है.

शुरू करने से पहले

  1. अपने JavaScript प्रोजेक्ट में Firebase जोड़ें.
  2. अपने Firebase प्रोजेक्ट के लिए, Google को साइन-इन करने की सुविधा देने वाली कंपनी के तौर पर चालू करें:
    1. Firebase कंसोल में, सुरक्षा > पुष्टि करना पर जाएं.
    2. साइन-इन करने का तरीका टैब में, Google को साइन-इन करने की सुविधा देने वाली कंपनी के तौर पर चालू करें.
    3. सेव करें पर क्लिक करें.

Firebase SDK की मदद से, साइन-इन की प्रोसेस को हैंडल करना

अगर कोई वेब ऐप्लिकेशन बनाया जा रहा है, तो लोगों को उनके Google खातों का इस्तेमाल करके, Firebase से पुष्टि करने की सुविधा देने का सबसे आसान तरीका है कि Firebase JavaScript SDK की मदद से, साइन-इन की प्रोसेस को हैंडल किया जाए. (अगर आपको Node.js या ब्राउज़र के अलावा किसी अन्य एनवायरमेंट में किसी उपयोगकर्ता की पुष्टि करनी है, तो आपको साइन-इन की प्रोसेस को मैन्युअल तरीके से हैंडल करना होगा.)

Firebase JavaScript SDK की मदद से, साइन-इन की प्रोसेस को हैंडल करने के लिए, यह तरीका अपनाएं:

  1. Google की सुविधा देने वाले ऑब्जेक्ट का इंस्टेंस बनाएं:

    Web

    import { GoogleAuthProvider } from "firebase/auth";
    
    const provider = new GoogleAuthProvider();

    Web

    var provider = new firebase.auth.GoogleAuthProvider();
  2. ज़रूरी नहीं: OAuth 2.0 के अन्य स्कोप तय करें जिनके लिए, आपको पुष्टि करने की सुविधा देने वाली कंपनी से अनुरोध करना है. कोई स्कोप जोड़ने के लिए, कॉल करें addScope. उदाहरण के लिए:

    Web

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');

    Web

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
    पुष्टि करने की सुविधा देने वाली कंपनी का दस्तावेज़ देखें.
  3. ज़रूरी नहीं: OAuth के काम के कस्टम पैरामीटर साफ़ तौर पर पास किए बिना, पुष्टि करने की सुविधा देने वाली कंपनी के OAuth फ़्लो को उपयोगकर्ता की पसंदीदा भाषा में स्थानीय बनाने के लिए, OAuth फ़्लो शुरू करने से पहले, Auth इंस्टेंस पर भाषा कोड अपडेट करें. उदाहरण के लिए:

    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();
  4. ज़रूरी नहीं: OAuth की सुविधा देने वाली कंपनी के अन्य कस्टम पैरामीटर तय करें जिन्हें आपको OAuth के अनुरोध के साथ भेजना है. कोई कस्टम पैरामीटर जोड़ने के लिए, शुरू की गई सुविधा देने वाली कंपनी पर setCustomParameters को कॉल करें. इसमें, OAuth की सुविधा देने वाली कंपनी के दस्तावेज़ में बताई गई कुंजी और उससे जुड़ी वैल्यू वाला ऑब्जेक्ट शामिल करें. उदाहरण के लिए:

    Web

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });

    Web

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });
    OAuth के ज़रूरी पैरामीटर रिज़र्व नहीं किए जा सकते. इन्हें अनदेखा कर दिया जाएगा. ज़्यादा जानकारी के लिए, पुष्टि करने की सुविधा देने वाली कंपनी का रेफ़रंस देखें.
  5. Google की सुविधा देने वाले ऑब्जेक्ट का इस्तेमाल करके, Firebase से पुष्टि करें. आपके पास यह विकल्प होता है कि लोगों से उनके Google खातों से साइन इन करने के लिए कहा जाए. इसके लिए, पॉप-अप विंडो खोली जा सकती है या उन्हें साइन-इन पेज पर रीडायरेक्ट किया जा सकता है. मोबाइल डिवाइसों पर, रीडायरेक्ट करने का तरीका बेहतर होता है.
    • पॉप-अप विंडो की मदद से साइन इन करने के लिए, signInWithPopup को कॉल करें:

      Web

      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

      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;
          // ...
        });
      इसके अलावा, ध्यान दें कि Google की सुविधा देने वाली कंपनी का OAuth टोकन वापस पाया जा सकता है. इसका इस्तेमाल, Google APIs की मदद से अन्य डेटा फ़ेच करने के लिए किया जा सकता है.

      यहां गड़बड़ियों को पकड़ा और हैंडल भी किया जा सकता है. गड़बड़ी कोड की सूची देखने के लिए, Auth रेफ़रंस दस्तावेज़ देखें.

    • साइन-इन पेज पर रीडायरेक्ट करके साइन इन करने के लिए, signInWithRedirect को कॉल करें: `signInWithRedirect` का इस्तेमाल करते समय, सबसे सही तरीके अपनाएं.

      Web

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);

      Web

      firebase.auth().signInWithRedirect(provider);
      इसके बाद, पेज लोड होने पर, getRedirectResult को कॉल करके, Google की सुविधा देने वाली कंपनी का OAuth टोकन भी वापस पाया जा सकता है:

      Web

      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

      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;
          // ...
        });
      यहां गड़बड़ियों को पकड़ा और हैंडल भी किया जा सकता है. गड़बड़ी कोड की सूची देखने के लिए, Auth रेफ़रंस दस्तावेज़ देखें.

Chrome एक्सटेंशन में Firebase से पुष्टि करना

अगर 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.
});