कॉर्डोवा के साथ OAuth प्रदाताओं का उपयोग करके प्रमाणित करें

फायरबेस जेएस एसडीके के साथ, आप अपने फायरबेस उपयोगकर्ताओं को कॉर्डोवा वातावरण में किसी भी समर्थित OAuth प्रदाता का उपयोग करके प्रमाणित करने दे सकते हैं। आप किसी भी समर्थित OAuth प्रदाता को साइन-इन प्रवाह करने के लिए Firebase SDK का उपयोग करके, या OAuth प्रवाह को मैन्युअल रूप से निष्पादित करके और परिणामी OAuth क्रेडेंशियल को Firebase में पास करके एकीकृत कर सकते हैं।

कॉर्डोवा के लिए फायरबेस प्रमाणीकरण सेट करें

  1. अपने जावास्क्रिप्ट प्रोजेक्ट में फायरबेस जोड़ें । फायरबेस स्निपेट जोड़ते समय, authDomain कॉन्फ़िगरेशन वेरिएबल पर ध्यान दें, जो my-app.firebaseapp.com जैसा दिखना चाहिए। यदि फायरबेस प्रावधानित firebaseapp.com डोमेन के बजाय एक कस्टम डोमेन का उपयोग किया जाता है, तो इसके बजाय कस्टम डोमेन का उपयोग किया जाना चाहिए।

  2. एंड्रॉइड ऐप सेट करने के लिए, अपने एंड्रॉइड ऐप को फायरबेस कंसोल में जोड़ें और अपने ऐप का विवरण दर्ज करें। आपको जेनरेट की गई google-services.json की आवश्यकता नहीं है।

  3. एक iOS ऐप सेट करने के लिए, एक iOS एप्लिकेशन बनाएं और इसे फायरबेस कंसोल में जोड़ें। कस्टम यूआरएल स्कीम प्लगइन इंस्टॉल करते समय आपको बाद में जोड़ने के लिए आईओएस बंडल आईडी की आवश्यकता होगी।

  4. फायरबेस डायनेमिक लिंक सक्षम करें:

    1. फायरबेस कंसोल में, डायनेमिक लिंक अनुभाग खोलें।
    2. यदि आपने अभी तक डायनामिक लिंक शर्तों को स्वीकार नहीं किया है और डायनामिक लिंक डोमेन नहीं बनाया है, तो अभी ऐसा करें।

      यदि आपने पहले ही डायनेमिक लिंक डोमेन बना लिया है, तो इस पर ध्यान दें। एक डायनामिक लिंक डोमेन आमतौर पर निम्नलिखित उदाहरण जैसा दिखता है:

      example.page.link

      जब आप आने वाले लिंक को इंटरसेप्ट करने के लिए अपने ऐप्पल या एंड्रॉइड ऐप को कॉन्फ़िगर करेंगे तो आपको इस मान की आवश्यकता होगी।

  5. फायरबेस कंसोल में Google साइन-इन सक्षम करें:

    1. फायरबेस कंसोल में, ऑथ सेक्शन खोलें।
    2. साइन इन विधि टैब पर, Google साइन-इन विधि सक्षम करें और सहेजें पर क्लिक करें।
  6. अपने कॉर्डोवा प्रोजेक्ट में आवश्यक प्लगइन्स इंस्टॉल करें।

    # Plugin to pass application build info (app name, ID, etc) to the OAuth widget.
    cordova plugin add cordova-plugin-buildinfo --save
    # Plugin to handle Universal Links (Android app link redirects)
    cordova plugin add cordova-universal-links-plugin-fix --save
    # Plugin to handle opening secure browser views on iOS/Android mobile devices
    cordova plugin add cordova-plugin-browsertab --save
    # Plugin to handle opening a browser view in older versions of iOS and Android
    cordova plugin add cordova-plugin-inappbrowser --save
    # Plugin to handle deep linking through Custom Scheme for iOS
    # Substitute *com.firebase.cordova* with the iOS bundle ID of your app.
    cordova plugin add cordova-plugin-customurlscheme --variable \
        URL_SCHEME=com.firebase.cordova --save
    
  7. निम्नलिखित कॉन्फ़िगरेशन को अपनी कॉर्डोवा config.xml फ़ाइल में जोड़ें, जहां AUTH_DOMAIN चरण (1) से डोमेन है, और DYNAMIC_LINK_DOMAIN चरण (3c) से डोमेन है।

    <universal-links>
        <host name="DYNAMIC_LINK_DOMAIN" scheme="https" />
        <host name="AUTH_DOMAIN" scheme="https">
            <path url="/__/auth/callback"/>
        </host>
    </universal-links>
    

    एक उदाहरण कॉन्फ़िगरेशन ऐसा दिख सकता है:

    <universal-links>
        <host name="example.page.link" scheme="https" />
        <host name="example-app.firebaseapp.com" scheme="https">
            <path url="/__/auth/callback"/>
        </host>
    </universal-links>
    

    यदि कस्टम डोमेन auth.custom.domain.com उपयोग किया जाता है, तो उसके स्थान पर my-app.firebaseapp.com रखें।

    एंड्रॉइड एप्लिकेशन के लिए singleTask उपयोग launchMode के लिए किया जाना चाहिए।

    <preference name="AndroidLaunchMode" value="singleTask" />
    

फायरबेस एसडीके के साथ साइन-इन प्रवाह को संभालें

  1. वर्तमान कॉर्डोवा वातावरण को सही ढंग से निर्धारित करने के लिए फायरबेस प्रामाणिक deviceReady इवेंट पर निर्भर करता है। सुनिश्चित करें कि उस इवेंट के ट्रिगर होने के बाद फायरबेस ऐप इंस्टेंस आरंभ किया गया है।

  2. Google प्रदाता ऑब्जेक्ट का एक उदाहरण बनाएं:

    Web modular API

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

    Web namespaced API

    var provider = new firebase.auth.GoogleAuthProvider();
  3. signInWithRedirect का उपयोग करके Google प्रदाता ऑब्जेक्ट का उपयोग करके फायरबेस के साथ प्रमाणित करें। ध्यान दें कि कॉर्डोवा में signInWithPopup समर्थित नहीं है।

    Web modular API

    import { getAuth, signInWithRedirect, getRedirectResult, GoogleAuthProvider } from "firebase/auth/cordova";
    
    const auth = getAuth();
    signInWithRedirect(auth, new GoogleAuthProvider())
      .then(() => {
        return getRedirectResult(auth);
      })
      .then((result) => {
        const credential = GoogleAuthProvider.credentialFromResult(result);
    
        // This gives you a Google Access Token.
        // You can use it to access the Google API.
        const token = credential.accessToken;
    
        // The signed-in user info.
        const user = result.user;
        // ...
      }).catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
      });

    Web namespaced API

    firebase.auth().signInWithRedirect(provider).then(() => {
      return firebase.auth().getRedirectResult();
    }).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;
      // ...
    }).catch((error) => {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
    });
  4. उस मामले को संभालने के लिए जहां साइन-इन ऑपरेशन पूरा होने से पहले ऐप गतिविधि नष्ट हो जाती है, जब आपका ऐप लोड होता है तो getRedirectResult पर कॉल करें।

    Web modular API

    import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth/cordova";
    
    const auth = getAuth();
    getRedirectResult(auth)
      .then((result) => {
        const credential = GoogleAuthProvider.credentialFromResult(result);
        if (credential) {        
          // This gives you a Google Access Token.
          // You can use it to access the Google API.
          const token = credential.accessToken;
          // The signed-in user info.
          const user = result.user;
          // ...
        }
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
      });

    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;
        // ...
      }
    }).catch((error) => {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
    });

    उसी तंत्र का उपयोग किसी नए प्रदाता को linkWithRedirect के माध्यम से लिंक करने के लिए या reauthenticateWithRedirect का उपयोग करके किसी मौजूदा प्रदाता के साथ पुन: प्रमाणित करने के लिए किया जा सकता है।