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

अपने ऐप्लिकेशन में GitHub से पुष्टि करने की सुविधा को जोड़कर, उपयोगकर्ताओं को Firebase से पुष्टि करने की सुविधा दी जा सकती है. साइन-इन फ़्लो को पूरा करने के लिए, Firebase SDK टूल का इस्तेमाल करके या GitHub OAuth 2.0 फ़्लो को मैन्युअल तरीके से चलाकर, Firebase को ऐक्सेस टोकन पास करके, GitHub से पुष्टि करने की सुविधा इंटिग्रेट की जा सकती है.

वेब कंटेनर इंस्टॉल करने से पहले

  1. Firebase को अपने JavaScript प्रोजेक्ट में जोड़ें.
  2. Firebase कंसोल में, पुष्टि करें सेक्शन खोलें.
  3. साइन इन करने का तरीका टैब पर, GitHub सेवा देने वाली कंपनी को चालू करें.
  4. सेवा देने वाली कंपनी के डेवलपर कंसोल से, Client-ID और क्लाइंट सीक्रेट जोड़ें:
    1. GitHub पर डेवलपर ऐप्लिकेशन के तौर पर अपने ऐप्लिकेशन को रजिस्टर करें और अपने ऐप्लिकेशन का OAuth 2.0 क्लाइंट आईडी और क्लाइंट सीक्रेट पाएं.
    2. पक्का करें कि आपका Firebase OAuth रीडायरेक्ट यूआरआई (उदाहरण के लिए, my-app-12345.firebaseapp.com/__/auth/handler) आपके GitHub ऐप्लिकेशन के कॉन्फ़िगरेशन पर आपके ऐप्लिकेशन के सेटिंग पेज पर, आपके ऑथराइज़ेशन कॉलबैक यूआरएल के तौर पर सेट है.
  5. सेव करें पर क्लिक करें.

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

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

Firebase JavaScript SDK टूल से साइन इन फ़्लो को मैनेज करने के लिए, यह तरीका अपनाएं:

  1. GitHub प्रोवाइडर ऑब्जेक्ट का इंस्टेंस बनाएं:

    वेब मॉड्यूलर एपीआई

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

    वेब नेमस्पेसेड एपीआई

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

    वेब मॉड्यूलर एपीआई

    provider.addScope('repo');

    वेब नेमस्पेसेड एपीआई

    provider.addScope('repo');
    पुष्टि करने की सेवा देने वाली कंपनी का दस्तावेज़ देखें.
  3. ज़रूरी नहीं: कस्टम OAuth प्रोवाइडर के ऐसे अतिरिक्त पैरामीटर तय करें जिन्हें आपको OAuth अनुरोध के साथ भेजना है. कोई कस्टम पैरामीटर जोड़ने के लिए, शुरू की गई सेवा देने वाली कंपनी के उस ऑब्जेक्ट के साथ setCustomParameters को कॉल करें जिसमें वह कुंजी मौजूद हो जो OAuth की सेवा देने वाली कंपनी के दस्तावेज़ और उससे जुड़ी वैल्यू में बताया गया हो. उदाहरण के लिए:

    वेब मॉड्यूलर एपीआई

    provider.setCustomParameters({
      'allow_signup': 'false'
    });

    वेब नेमस्पेसेड एपीआई

    provider.setCustomParameters({
      'allow_signup': 'false'
    });
    रिज़र्व किए गए ज़रूरी OAuth पैरामीटर की अनुमति नहीं है. इन्हें अनदेखा कर दिया जाएगा. ज़्यादा जानकारी के लिए, पुष्टि करने वाली कंपनी का रेफ़रंस देखें.
  4. GitHub प्रोवाइडर ऑब्जेक्ट का इस्तेमाल करके, Firebase से पुष्टि करें. उपयोगकर्ताओं से पॉप-अप विंडो खोलकर या साइन-इन पेज पर रीडायरेक्ट करके, उनके GitHub खातों से साइन इन करने के लिए कहा जा सकता है. मोबाइल डिवाइस पर रीडायरेक्ट करने के तरीके को प्राथमिकता दी जाती है.
    • पॉप-अप विंडो की मदद से साइन इन करने के लिए, signInWithPopup पर कॉल करें:

      वेब मॉड्यूलर एपीआई

      import { getAuth, signInWithPopup, GithubAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a GitHub Access Token. You can use it to access the GitHub API.
          const credential = GithubAuthProvider.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 = GithubAuthProvider.credentialFromError(error);
          // ...
        });

      वेब नेमस्पेसेड एपीआई

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a GitHub Access Token. You can use it to access the GitHub 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;
          // ...
        });
      यह भी ध्यान रखें कि GitHub सेवा देने वाली कंपनी के OAuth टोकन को वापस लाया जा सकता है. इसका इस्तेमाल, GitHub API का इस्तेमाल करके ज़्यादा डेटा फ़ेच करने के लिए किया जा सकता है.

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

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

      वेब मॉड्यूलर एपीआई

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

      वेब नेमस्पेसेड एपीआई

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

      वेब मॉड्यूलर एपीआई

      import { getAuth, getRedirectResult, GithubAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          const credential = GithubAuthProvider.credentialFromResult(result);
          if (credential) {
            // This gives you a GitHub Access Token. You can use it to access the GitHub API.
            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 = GithubAuthProvider.credentialFromError(error);
          // ...
        });

      वेब नेमस्पेसेड एपीआई

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a GitHub Access Token. You can use it to access the GitHub 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;
          // ...
        });
      यहां पर गड़बड़ियों का पता लगाकर उन्हें ठीक भी किया जा सकता है. गड़बड़ी कोड की सूची के लिए, आधिकारिक रेफ़रंस दस्तावेज़ पर एक नज़र डालें.

साइन-इन की प्रोसेस को मैन्युअल तरीके से मैनेज करना

GitHub खाते का इस्तेमाल करके, Firebase से पुष्टि की जा सकती है कि साइन-इन फ़्लो को मैनेज करने के लिए, GitHub OAuth 2.0 एंडपॉइंट को कॉल किया जा सकता है या नहीं:

  1. डेवलपर के दस्तावेज़ में दिए गए निर्देशों का पालन करके, अपने ऐप्लिकेशन में GitHub की पुष्टि करने की सुविधा को इंटिग्रेट करें. GitHub साइन इन फ़्लो के खत्म होने पर, आपको OAuth 2.0 का ऐक्सेस टोकन मिलेगा.
  2. अगर आपको Node.js ऐप्लिकेशन पर साइन इन करना है, तो Node.js ऐप्लिकेशन पर OAuth ऐक्सेस टोकन भेजें.
  3. जब कोई उपयोगकर्ता GitHub से साइन इन कर ले, तब Firebase क्रेडेंशियल के लिए, OAuth 2.0 ऐक्सेस टोकन को एक्सचेंज करें:

    वेब मॉड्यूलर एपीआई

    import { GithubAuthProvider } from "firebase/auth";
    
    const credential = GithubAuthProvider.credential(token);

    वेब नेमस्पेसेड एपीआई

    var credential = firebase.auth.GithubAuthProvider.credential(token);
  4. Firebase क्रेडेंशियल का इस्तेमाल करके, Firebase से पुष्टि करें:

    वेब मॉड्यूलर एपीआई

    import { getAuth, signInWithCredential } from "firebase/auth";
    
    // Sign in with the credential from the user.
    const auth = getAuth();
    signInWithCredential(auth, credential)
      .then((result) => {
        // Signed in 
        // ...
      })
      .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;
        // ...
      });

    वेब नेमस्पेसेड एपीआई

    // Sign in with the credential from the user.
    firebase.auth()
      .signInWithCredential(credential)
      .then((result) => {
        // Signed in 
        // ...
      })
      .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;
        // ...
      });

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

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

अगले चरण

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

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

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

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

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

वेब मॉड्यूलर एपीआई

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