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

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

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

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

Firebase SDK टूल की मदद से साइन-इन की प्रोसेस को मैनेज करना

अगर आप कोई वेब ऐप्लिकेशन बना रहे हैं, तो अपने उपयोगकर्ताओं की पुष्टि करने का यह सबसे आसान तरीका है के साथ साइन-इन फ़्लो को मैनेज करना है, जो Firebase JavaScript SDK टूल. (अगर आप Node.js में किसी उपयोगकर्ता की पुष्टि करना चाहते हैं या अन्य गैर-ब्राउज़र एनवायरमेंट का इस्तेमाल करने के लिए, आपको साइन-इन फ़्लो को मैन्युअल तौर पर मैनेज करना होगा.

Firebase JavaScript SDK टूल से साइन-इन फ़्लो को मैनेज करने के लिए, इन निर्देशों का पालन करें चरण:

  1. Google प्रोवाइडर ऑब्जेक्ट का इंस्टेंस बनाएं:
    WebWeb
    import { GoogleAuthProvider } from "firebase/auth";

    const provider = new GoogleAuthProvider();
    var provider = new firebase.auth.GoogleAuthProvider();
  2. ज़रूरी नहीं: OAuth 2.0 के वे अन्य स्कोप तय किए जा सकते हैं जिनके लिए आपने अपने Google खाते में साइन इन किया है पुष्टि करने वाली कंपनी से अनुरोध करना है. दायरा जोड़ने के लिए, कॉल करें addScope. उदाहरण के लिए:
    WebWeb
    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
    पुष्टि करने की सेवा देने वाली कंपनी के बारे में जानें दस्तावेज़ में दिया गया है.
  3. ज़रूरी नहीं: सेवा देने वाली कंपनी के OAuth फ़्लो को उपयोगकर्ता की पसंद के मुताबिक बनाने के लिए मौजूदा कस्टम OAuth पैरामीटर को साफ़ तौर पर पास किए बिना, इस भाषा में बदलाव करें OAuth फ़्लो शुरू करने से पहले, Auth इंस्टेंस पर कोड. उदाहरण के लिए:
    WebWeb
    import { getAuth } from "firebase/auth";

    const auth = getAuth();
    auth
    .languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // auth.useDeviceLanguage();
    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
  4. ज़रूरी नहीं: OAuth की सेवा देने वाली कंपनी के अन्य पैरामीटर तय करना जिसे आपको OAuth अनुरोध की मदद से भेजना है. कस्टम पैरामीटर जोड़ने के लिए, कुंजी वाले ऑब्जेक्ट के साथ शुरू की गई कंपनी के लिए setCustomParameters जैसा कि OAuth प्रोवाइडर के दस्तावेज़ और संबंधित वैल्यू में बताया गया है. उदाहरण के लिए:
    WebWeb
    provider.setCustomParameters({
     
    'login_hint': 'user@example.com'
    });
    provider.setCustomParameters({
     
    'login_hint': 'user@example.com'
    });
    रिज़र्व किए गए ज़रूरी OAuth पैरामीटर की अनुमति नहीं है. इन्हें अनदेखा कर दिया जाएगा. ज़्यादा जानकारी के लिए, पुष्टि करने वाली कंपनी का संदर्भ देखें.
  5. Google प्रोवाइडर ऑब्जेक्ट का इस्तेमाल करके, Firebase से पुष्टि करें. आप अपने उपयोगकर्ताओं को उनके Google खातों से प्रवेश करने के लिए कहें. पॉप-अप विंडो पर क्लिक करें या साइन-इन पेज पर रीडायरेक्ट करें. रीडायरेक्ट करने का तरीका मोबाइल डिवाइस पर प्राथमिकता दी जाती है.
    • पॉप-अप विंडो की मदद से साइन इन करने के लिए, signInWithPopup पर कॉल करें:
      WebWeb
      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);
         
      // ...
       
      });
      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 API का इस्तेमाल करके ज़्यादा डेटा फ़ेच करने के लिए किया जा सकता है.

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

    • साइन-इन पेज पर रीडायरेक्ट करके साइन इन करने के लिए, signInWithRedirect पर कॉल करें: `signInWithredirect` का इस्तेमाल करते समय, सबसे सही तरीके अपनाएं.
      WebWeb
      import { getAuth, signInWithRedirect } from "firebase/auth";

      const auth = getAuth();
      signInWithRedirect
      (auth, provider);
      firebase.auth().signInWithRedirect(provider);
      इसके बाद, इस नंबर पर कॉल करके भी Google की सेवा देने वाली कंपनी का OAuth टोकन वापस पाया जा सकता है आपका पेज लोड होने पर getRedirectResult:
      WebWeb
      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);
         
      // ...
       
      });
      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;
         
      // ...
       
      });
      यहां पर गड़बड़ियों का पता लगाकर उन्हें ठीक भी किया जा सकता है. गड़बड़ी कोड की सूची के लिए, आधिकारिक रेफ़रंस दस्तावेज़ पर एक नज़र डालें.

अगर आपने Firebase कंसोल में, हर ईमेल पते के लिए एक खाता सेटिंग चालू की है, तो जब कोई उपयोगकर्ता पहले से ही किसी ईमेल सेवा देने वाली कंपनी (जैसे कि Google) में साइन इन करने की कोशिश करता है किसी दूसरे Firebase उपयोगकर्ता के प्रोवाइडर (जैसे Facebook) के लिए मौजूद है, तो गड़बड़ी auth/account-exists-with-different-credential को एक AuthCredential ऑब्जेक्ट (Google आईडी टोकन). साइन इन करने के लिए, सेवा देने वाली मौजूदा कंपनी के लिए, उपयोगकर्ता को पहले मौजूदा कंपनी (Facebook) से साइन करना होगा और फिर पुराना AuthCredential (Google आईडी टोकन).

अगर आप signInWithPopup का इस्तेमाल करते हैं, तो इस तरह के कोड वाली auth/account-exists-with-different-credential गड़बड़ियां उदाहरण:

import {
  getAuth
,
  linkWithCredential
,
  signInWithPopup
,
 
GoogleAuthProvider,
} from "firebase/auth";

try {
 
// Step 1: User tries to sign in using Google.
  let result
= await signInWithPopup(getAuth(), new GoogleAuthProvider());
} catch (error) {
 
// Step 2: User's email already exists.
 
if (error.code === "auth/account-exists-with-different-credential") {
   
// The pending Google credential.
    let pendingCred
= error.credential;

   
// Step 3: Save the pending credential in temporary storage,

   
// Step 4: Let the user know that they already have an account
   
// but with a different provider, and let them choose another
   
// sign-in method.
 
}
}

// ...

try {
 
// Step 5: Sign the user in using their chosen method.
  let result
= await signInWithPopup(getAuth(), userSelectedProvider);

 
// Step 6: Link to the Google credential.
 
// TODO: implement `retrievePendingCred` for your app.
  let pendingCred
= retrievePendingCred();

 
if (pendingCred !== null) {
   
// As you have access to the pending credential, you can directly call the
   
// link method.
    let user
= await linkWithCredential(result.user, pendingCred);
 
}

 
// Step 7: Continue to app.
} catch (error) {
 
// ...
}

रीडायरेक्ट मोड

रीडायरेक्ट मोड में इस गड़बड़ी को ठीक इसी तरह से हैंडल किया जाता है. इसमें अंतर यह होता है कि क्रेडेंशियल को पेज रीडायरेक्ट के बीच कैश मेमोरी में रखना चाहिए. उदाहरण के लिए, सेशन स्टोरेज का इस्तेमाल करना.

Google खाते का इस्तेमाल करके भी, Firebase से पुष्टि की जा सकती है. इसके लिए, 'Google से साइन इन करें' लाइब्रेरी की मदद से साइन-इन करने का फ़्लो:

  1. अपने ऐप्लिकेशन में 'Google से साइन इन करें' सुविधा को इंटिग्रेट करें. इसके लिए, यहां दिए गए निर्देशों का पालन करें: इंटिग्रेशन गाइड देखें. पक्का करें कि आपने 'Google साइन इन' को, अपने Firebase प्रोजेक्ट के लिए जनरेट किए गए Google Client ID के साथ कॉन्फ़िगर किया हो. आपको अपने प्रोजेक्ट का Google क्लाइंट आईडी अपने प्रोजेक्ट के Developers Console क्रेडेंशियल पेज में मिल सकता है.
  2. साइन-इन नतीजे के कॉलबैक में, Firebase क्रेडेंशियल के लिए Google की पुष्टि से मिले आईडी से मिले आईडी टोकन को एक्सचेंज करें और Firebase से पुष्टि करने के लिए इसका इस्तेमाल करें:
    function handleCredentialResponse(response) {
     
    // Build Firebase credential with the Google ID token.
     
    const idToken = response.credential;
     
    const credential = GoogleAuthProvider.credential(idToken);

     
    // Sign in with credential from the Google user.
      signInWithCredential
    (auth, credential).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;
       
    // The credential that was used.
       
    const credential = GoogleAuthProvider.credentialFromError(error);
       
    // ...
     
    });
    }
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

Node.js ऐप्लिकेशन में Firebase की मदद की पुष्टि करने के लिए:

  1. उपयोगकर्ता के Google खाते से साइन इन करें और उसका Google आईडी पाएं टोकन. इसे कई तरीकों से पूरा किया जा सकता है. उदाहरण के लिए:
  2. आपको उपयोगकर्ता का Google आईडी टोकन मिलने के बाद, उसका इस्तेमाल करके क्रेडेंशियल बनाएं ऑब्जेक्ट पर जाएं और उसके बाद उपयोगकर्ता को क्रेडेंशियल के साथ साइन इन करें:
    WebWeb
    import { getAuth, signInWithCredential, GoogleAuthProvider } from "firebase/auth";

    // Build Firebase credential with the Google ID token.
    const credential = GoogleAuthProvider.credential(id_token);

    // Sign in with credential from the Google user.
    const auth = getAuth();
    signInWithCredential
    (auth, credential).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);
     
    // ...
    });
    // Build Firebase credential with the Google ID token.
    var credential = firebase.auth.GoogleAuthProvider.credential(id_token);

    // Sign in with credential from the Google user.
    firebase
    .auth().signInWithCredential(credential).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 एक्सटेंशन में Firebase की मदद से पुष्टि करें

यदि आप कोई Chrome एक्सटेंशन ऐप्लिकेशन बना रहे हैं, तो ऑफ़स्क्रीन दस्तावेज़ गाइड.

प्रोजेक्ट बनाते समय, Firebase आपके प्रोजेक्ट के लिए एक यूनीक सबडोमेन का प्रावधान करेगा: https://my-app-12345.firebaseapp.com.

इसका इस्तेमाल, OAuth में साइन इन करने के लिए रीडायरेक्ट करने के तरीके के तौर पर भी किया जाएगा. उस डोमेन को की अनुमति है. हालांकि, इसका मतलब है कि लोगों को ऐप्लिकेशन पर वापस रीडायरेक्ट करने से पहले Google में साइन इन करते समय अपने डोमेन के लिए: इस पर जारी रखें: https://my-app-12345.firebaseapp.com.

अगर आपको अपना सबडोमेन नहीं दिखाना है, तो Firebase Hosting का इस्तेमाल करके कस्टम डोमेन सेट अप करें:

  1. पहले से लेकर तीसरे चरण का पालन करें Hosting के लिए अपना डोमेन सेट अप करें. पुष्टि करने पर आपके डोमेन का स्वामित्व, Hosting आपके कस्टम डोमेन के लिए एक SSL प्रमाणपत्र का प्रावधान करता है.
  2. अपने कस्टम डोमेन को Firebase कंसोल: auth.custom.domain.com.
  3. Google Developer Console या OAuth सेटअप पेज में, रीडायरेक्ट पेज के यूआरएल को वाइटलिस्ट करें, जो आपके कस्टम डोमेन पर ऐक्सेस किए जा सकेंगे: https://auth.custom.domain.com/__/auth/handler.
  4. JavaScript लाइब्रेरी का इस्तेमाल शुरू करते समय, अपने कस्टम डोमेन को authDomain फ़ील्ड:
    var config = {
      apiKey
    : '...',
     
    // Changed from 'my-app-12345.firebaseapp.com'.
      authDomain
    : 'auth.custom.domain.com',
      databaseURL
    : 'https://my-app-12345.firebaseio.com',
      projectId
    : 'my-app-12345',
      storageBucket
    : 'my-app-12345.appspot.com',
      messagingSenderId
    : '1234567890'
    };
    firebase
    .initializeApp(config);

अगले चरण

किसी उपयोगकर्ता के पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बना दिया जाता है और आपके खाते के क्रेडेंशियल मौजूद हैं, जैसे कि उपयोगकर्ता नाम और पासवर्ड, या पुष्टि करने वाली कंपनी की जानकारी—उपयोगकर्ता ने जिससे साइन इन किया है. यह नया खाते को आपके Firebase प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. साथ ही, इसका इस्तेमाल आपके प्रोजेक्ट के हर ऐप्लिकेशन में हर उपयोगकर्ता के लिए उपलब्ध होता है. भले ही, उपयोगकर्ता किसी भी तरह से साइन इन करता हो.

  • आपके ऐप्लिकेशन में, उपयोगकर्ता के मालिकाना हक की स्थिति जानने के लिए, सुझाया गया तरीका यह है Auth ऑब्जेक्ट पर ऑब्ज़र्वर सेट करें. इसके बाद ही आप उपयोगकर्ता की User ऑब्जेक्ट से मिली, प्रोफ़ाइल की बुनियादी जानकारी. यहां जाएं: उपयोगकर्ताओं को मैनेज करें.

  • आपके Firebase Realtime Database और Cloud Storage में सुरक्षा के नियम, ये काम किए जा सकते हैं auth वैरिएबल से साइन-इन किए हुए उपयोगकर्ता का यूनीक यूज़र आईडी पाएं, और इसका इस्तेमाल करके यह कंट्रोल किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.

उपयोगकर्ताओं को, पुष्टि करने के एक से ज़्यादा तरीके का इस्तेमाल करके, अपने ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है पुष्टि करने वाले के क्रेडेंशियल जोड़कर मौजूदा उपयोगकर्ता खाते से लिंक किया जा सकता है.

उपयोगकर्ता को साइन आउट करने के लिए पर कॉल करें signOut:

WebWeb
import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut
(auth).then(() => {
 
// Sign-out successful.
}).catch((error) => {
 
// An error happened.
});
firebase.auth().signOut().then(() => {
 
// Sign-out successful.
}).catch((error) => {
 
// An error happened.
});