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

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

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

Apple का इस्तेमाल करके साइन इन करने के लिए, पहले Apple की डेवलपर साइट पर 'Apple से साइन इन करें' सुविधा को कॉन्फ़िगर करें. इसके बाद, Apple को अपने Firebase प्रोजेक्ट में साइन-इन की सुविधा देने वाली कंपनी के तौर पर चालू करें.

Apple Developer Program में शामिल होना

'Apple से साइन इन करें' सुविधा को सिर्फ़ Apple Developer Program के सदस्य कॉन्फ़िगर कर सकते हैं.

'Apple से साइन इन करें' सुविधा को कॉन्फ़िगर करें

Apple Developer साइट पर ये काम करें:

  1. अपनी वेबसाइट को अपने ऐप्लिकेशन से जोड़ने के लिए, वेब के लिए, 'Apple से साइन इन करें' सुविधा कॉन्फ़िगर करें के पहले सेक्शन में बताया गया तरीका अपनाएं. जब कहा जाए, तब इस यूआरएल को रिटर्न यूआरएल के तौर पर रजिस्टर करें:

    https://YOUR_FIREBASE_PROJECT_ID.firebaseapp.com/__/auth/handler

    Firebase कंसोल के सेटिंग पेज पर जाकर, अपना Firebase प्रोजेक्ट आईडी देखा जा सकता है.

    काम पूरा हो जाने के बाद, अपना नया सेवा आईडी नोट कर लें, जिसकी आपको अगले सेक्शन में ज़रूरत होगी.

  2. 'Apple निजी पासकोड से साइन इन करें' सुविधा बनाएं. अगले सेक्शन में, आपको अपने नए निजी पासकोड और 'की' आईडी की ज़रूरत होगी.
  3. अगर Firebase से पुष्टि करने की किसी भी सुविधा का इस्तेमाल किया जाता है, जो उपयोगकर्ताओं को ईमेल भेजती है, जिसमें ईमेल लिंक से साइन-इन, ईमेल पते की पुष्टि, खाता बदलने का अनुरोध निरस्त करने, और दूसरी चीज़ें शामिल हैं, तो Apple की निजी ईमेल रिले सेवा कॉन्फ़िगर करें और रजिस्टर करें noreply@YOUR_FIREBASE_PROJECT_ID.firebaseapp.com (या पसंद के मुताबिक बनाया गया ईमेल टेंप्लेट डोमेन) ताकि Apple, Firebase से पुष्टि के ज़रिए भेजे गए ईमेल को पहचान छिपाने वाले Apple ईमेल पतों पर भेज सके.

साइन इन की सेवा देने वाली कंपनी के तौर पर Apple की सेवाएं चालू करें

  1. अपने प्रोजेक्ट में Firebase जोड़ें.
  2. Firebase कंसोल में, पुष्टि करें सेक्शन खोलें. साइन इन करने का तरीका टैब पर, Apple प्रोवाइडर को चालू करें. पिछले सेक्शन में बनाया गया सेवा आईडी बताएं. साथ ही, OAuth कोड फ़्लो कॉन्फ़िगरेशन सेक्शन में, अपना Apple Team ID और पिछले सेक्शन में बनाए गए निजी पासकोड और पासकोड के आईडी की जानकारी दें.

Apple की पहचान छिपाकर डेटा इस्तेमाल करने की ज़रूरी शर्तों को पूरा करता है

'Apple से साइन इन करें' सुविधा की मदद से, उपयोगकर्ताओं को यह विकल्प मिलता है कि वे साइन इन करते समय, अपने डेटा और ईमेल पते की पहचान छिपा सकते हैं. यह विकल्प चुनने वाले उपयोगकर्ताओं के ईमेल पते, privaterelay.appleid.com डोमेन वाले होते हैं. अपने ऐप्लिकेशन में 'Apple से साइन इन करें' सुविधा का इस्तेमाल करते समय, आपको पहचान छिपाने वाले इन Apple ID से जुड़ी, लागू होने वाली डेवलपर नीतियों या Apple की शर्तों का पालन करना होगा.

इसमें पहचान ज़ाहिर किए बिना पहचान ज़ाहिर करने वाली किसी भी निजी जानकारी को पहचान छिपाने वाले Apple ID से जोड़ने से पहले, उपयोगकर्ता की ज़रूरी सहमति लेना भी शामिल है. Firebase से पुष्टि करने की सुविधा का इस्तेमाल करते समय, इसमें ये कार्रवाइयां शामिल हो सकती हैं:

  • किसी ईमेल पते को पहचान छिपाने वाले Apple ID से लिंक करें. इसी तरह, पहचान छिपाने वाले Apple ID से किसी ईमेल पते को लिंक करें.
  • किसी फ़ोन नंबर को पहचान छिपाने वाले Apple ID से लिंक करें. इसी तरह, किसी फ़ोन नंबर को बिना पहचान वाले Apple ID से लिंक करें
  • बिना पहचान वाले सोशल क्रेडेंशियल (Facebook, Google वगैरह) को बिना पहचान वाले Apple ID से लिंक करें. इसके अलावा, पहचान छिपाने वाले सोशल क्रेडेंशियल (Facebook, Google वगैरह) को जोड़ें.

ऊपर दी गई सूची पूरी नहीं है. यह पक्का करने के लिए कि आपका ऐप्लिकेशन, Apple की ज़रूरी शर्तों को पूरा करता है, अपने डेवलपर खाते के सदस्यता सेक्शन में जाकर, Apple Developer Program के लाइसेंस का कानूनी समझौता देखें.

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

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

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

  1. इससे जुड़े प्रोवाइडर आईडी apple.com का इस्तेमाल करके, OAuthProvider का इंस्टेंस बनाएं.

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

    import { OAuthProvider } from "firebase/auth";
    
    const provider = new OAuthProvider('apple.com');

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

    var provider = new firebase.auth.OAuthProvider('apple.com');
  2. ज़रूरी नहीं: पुष्टि करने की सेवा देने वाली कंपनी से अनुरोध करने के लिए, OAuth 2.0 के डिफ़ॉल्ट स्कोप के अलावा अन्य स्कोप तय करें.

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

    provider.addScope('email');
    provider.addScope('name');

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

    provider.addScope('email');
    provider.addScope('name');

    डिफ़ॉल्ट रूप से, हर ईमेल पते के लिए एक खाता चालू होने पर, Firebase ईमेल और नाम के दायरों के लिए अनुरोध करता है. अगर इस सेटिंग को हर ईमेल पते के लिए एक से ज़्यादा खाते पर सेट किया जाता है, तो Firebase Apple से स्कोप के लिए तब तक अनुरोध नहीं करता, जब तक कि उनकी जानकारी नहीं दी जाती.

  3. ज़रूरी नहीं: अगर आपको Apple की साइन-इन स्क्रीन को अंग्रेज़ी के अलावा किसी दूसरी भाषा में दिखाना है, तो locale पैरामीटर सेट करें. इस्तेमाल की जाने वाली भाषाओं के लिए, Apple के दस्तावेज़ों से साइन इन करें सेक्शन देखें.

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

    provider.setCustomParameters({
      // Localize the Apple authentication screen in French.
      locale: 'fr'
    });

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

    provider.setCustomParameters({
      // Localize the Apple authentication screen in French.
      locale: 'fr'
    });
  4. OAuth प्रोवाइडर ऑब्जेक्ट का इस्तेमाल करके, Firebase से पुष्टि करें. पॉप-अप विंडो खोलकर या साइन-इन पेज पर रीडायरेक्ट करके, उपयोगकर्ताओं को उनके Apple खातों से साइन इन करने के लिए कहा जा सकता है. रीडायरेक्ट करने के तरीके को मोबाइल डिवाइस पर प्राथमिकता दी जाती है.

    • पॉप-अप विंडो की मदद से साइन इन करने के लिए, signInWithPopup() पर कॉल करें:

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

      import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // The signed-in user info.
          const user = result.user;
      
          // Apple credential
          const credential = OAuthProvider.credentialFromResult(result);
          const accessToken = credential.accessToken;
          const idToken = credential.idToken;
      
          // 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 credential that was used.
          const credential = OAuthProvider.credentialFromError(error);
      
          // ...
        });

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

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // The signed-in user info.
          var user = result.user;
      
          // You can also get the Apple OAuth Access and ID Tokens.
          var accessToken = credential.accessToken;
          var idToken = credential.idToken;
      
          // IdP data available using getAdditionalUserInfo(result)
        // ...
        })
        .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;
      
          // ...
        });
    • साइन-इन पेज पर रीडायरेक्ट करके साइन इन करने के लिए, signInWithRedirect() पर कॉल करें:

    signInWithRedirect, linkWithRedirect या reauthenticateWithRedirect का इस्तेमाल करते समय, सबसे सही तरीके अपनाएं.

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

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

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

    firebase.auth().signInWithRedirect(provider);

    उपयोगकर्ता के साइन-इन करने और पेज पर वापस लौटने के बाद, getRedirectResult() पर कॉल करके साइन-इन का नतीजा पाया जा सकता है:

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

    import { getAuth, getRedirectResult, OAuthProvider } from "firebase/auth";
    
    // Result from Redirect auth flow.
    const auth = getAuth();
    getRedirectResult(auth)
      .then((result) => {
        const credential = OAuthProvider.credentialFromResult(result);
        if (credential) {
          // You can also get the Apple OAuth Access and ID Tokens.
          const accessToken = credential.accessToken;
          const idToken = credential.idToken;
        }
        // The signed-in user info.
        const user = result.user;
      })
      .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 credential that was used.
        const credential = OAuthProvider.credentialFromError(error);
    
        // ...
      });

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

    // Result from Redirect auth flow.
    firebase
      .auth()
      .getRedirectResult()
      .then((result) => {
        if (result.credential) {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
    
          // You can get the Apple OAuth Access and ID Tokens.
          var accessToken = credential.accessToken;
          var idToken = credential.idToken;
    
          // IdP data available in result.additionalUserInfo.profile.
          // ...
        }
        // The signed-in user info.
        var user = result.user;
      })
      .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 पुष्टि के साथ काम करने वाली दूसरी कंपनियों के उलट, Apple कोई फ़ोटो का यूआरएल नहीं देता.

    साथ ही, जब उपयोगकर्ता अपने ईमेल को ऐप्लिकेशन के साथ शेयर नहीं करने का विकल्प चुनता है, तो Apple उस उपयोगकर्ता के लिए एक यूनीक ईमेल पता (फ़ॉर्म xyz@privaterelay.appleid.com का) उपलब्ध कराता है. इसे वह आपके ऐप्लिकेशन के साथ शेयर करता है. अगर आपने निजी ईमेल रिले सेवा को कॉन्फ़िगर किया है, तो Apple, उपयोगकर्ता की पहचान छिपाने वाले ईमेल पते पर भेजे गए ईमेल को उपयोगकर्ता के असली ईमेल पते पर फ़ॉरवर्ड कर देता है.

    Apple उपयोगकर्ता की जानकारी, जैसे कि डिसप्ले नेम को उपयोगकर्ता के पहली बार साइन इन करने पर ही ऐप्लिकेशन के साथ शेयर करता है. आम तौर पर, जब कोई उपयोगकर्ता पहली बार Apple में साइन इन करता है, तब Firebase उस डिसप्ले नेम को सेव करता है. यह नाम आपको firebase.auth().currentUser.displayName से मिल सकता है. हालांकि, अगर आपने पहले Apple का इस्तेमाल करके Firebase का इस्तेमाल किए बिना ऐप्लिकेशन में किसी उपयोगकर्ता को साइन इन किया था, तो Apple की ओर से Firebase को उपयोगकर्ता का डिसप्ले नेम नहीं दिया जाएगा.

फिर से पुष्टि करना और खाता लिंक करना

reauthenticateWithPopup() और reauthenticateWithRedirect() के साथ भी यही पैटर्न इस्तेमाल किया जा सकता है. इसका इस्तेमाल संवेदनशील कार्रवाइयों के लिए नया क्रेडेंशियल पाने के लिए किया जा सकता है, जिसमें हाल ही में साइन इन करना ज़रूरी है:

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

import { getAuth, reauthenticateWithPopup, OAuthProvider } from "firebase/auth";

// Result from Redirect auth flow.
const auth = getAuth();
const provider = new OAuthProvider('apple.com');

reauthenticateWithPopup(auth.currentUser, provider)
  .then((result) => {
    // User is re-authenticated with fresh tokens minted and can perform
    // sensitive operations like account deletion, or updating their email
    // address or password.

    // The signed-in user info.
    const user = result.user;

    // You can also get the Apple OAuth Access and ID Tokens.
    const credential = OAuthProvider.credentialFromResult(result);
    const accessToken = credential.accessToken;
    const idToken = credential.idToken;

    // ...
  })
  .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 credential that was used.
    const credential = OAuthProvider.credentialFromError(error);

    // ...
  });

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

const provider = new firebase.auth.OAuthProvider('apple.com');

firebase
  .auth()
  .currentUser
  .reauthenticateWithPopup(provider)
  .then((result) => {
    // User is re-authenticated with fresh tokens minted and can perform
    // sensitive operations like account deletion, or updating their email
    // address or password.
    /** @type {firebase.auth.OAuthCredential} */
    var credential = result.credential;

    // The signed-in user info.
    var user = result.user;
     // You can also get the Apple OAuth Access and ID Tokens.
    var accessToken = credential.accessToken;
    var idToken = credential.idToken;

    // 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;

    // ...
  });

साथ ही, पहचान देने वाली अलग-अलग कंपनियों के खातों को मौजूदा खातों से जोड़ने के लिए, linkWithPopup() और linkWithRedirect() का इस्तेमाल किया जा सकता है.

ध्यान दें कि Apple के उपयोगकर्ताओं के Apple खातों को अन्य डेटा से लिंक करने से पहले, आपको उनसे साफ़ तौर पर सहमति लेनी होगी.

उदाहरण के लिए, किसी Facebook खाते को मौजूदा Firebase खाते से लिंक करने के लिए, उस ऐक्सेस टोकन का इस्तेमाल करें जो आपको उपयोगकर्ता को Facebook में साइन इन करने पर मिला है.

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

import { getAuth, linkWithPopup, FacebookAuthProvider } from "firebase/auth";

const auth = getAuth();
const provider = new FacebookAuthProvider();
provider.addScope('user_birthday');

// Assuming the current user is an Apple user linking a Facebook provider.
linkWithPopup(auth.currentUser, provider)
    .then((result) => {
      // Facebook credential is linked to the current Apple user.
      // ...

      // The user can now sign in to the same account
      // with either Apple or Facebook.
    })
    .catch((error) => {
      // Handle error.
    });

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

const provider = new firebase.auth.FacebookAuthProvider();
provider.addScope('user_birthday');

// Assuming the current user is an Apple user linking a Facebook provider.
firebase.auth().currentUser.linkWithPopup(provider)
    .then((result) => {
      // Facebook credential is linked to the current Apple user.
      // Facebook additional data available in result.additionalUserInfo.profile,

      // Additional Facebook OAuth access token can also be retrieved.
      // result.credential.accessToken

      // The user can now sign in to the same account
      // with either Apple or Facebook.
    })
    .catch((error) => {
      // Handle error.
    });

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

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

ध्यान दें कि आपको अब भी डिफ़ॉल्ट firebaseapp.com डोमेन की तरह ही Apple से कस्टम डोमेन की पुष्टि करनी होगी:

http://auth.custom.example.com/.well-known/apple-developer-domain-association.txt

टोकन निरस्त करना

Apple के लिए यह ज़रूरी है कि खाता बनाने की सुविधा देने वाले ऐप्लिकेशन को, लोगों को इस ऐप्लिकेशन में अपना खाता मिटाने की अनुमति देनी चाहिए. इस बारे में App Store के समीक्षा दिशा-निर्देशों में बताया गया है

इस ज़रूरी शर्त को पूरा करने के लिए, यह तरीका अपनाएं:

  1. पक्का करें कि आपने 'Apple से साइन इन करें' सुविधा के कॉन्फ़िगरेशन में, सेवाएं आईडी और OAuth कोड फ़्लो कॉन्फ़िगरेशन सेक्शन भरा हो. यह सेक्शन, 'Apple से साइन इन करें' कॉन्फ़िगर करें सेक्शन में बताया गया है.

  2. जब उपयोगकर्ता 'Apple से साइन इन करें' सुविधा का इस्तेमाल करके बनाए जाते हैं, तो Firebase, उपयोगकर्ता टोकन को सेव नहीं करता. इसलिए, आपको उपयोगकर्ता का टोकन रद्द करने और खाता मिटाने से पहले, फिर से साइन इन करने के लिए कहना होगा.

    इसके बाद, OAuthCredential से Apple OAuth ऐक्सेस टोकन पाएं और Apple OAuth ऐक्सेस टोकन को रद्द करने के लिए, इसका इस्तेमाल revokeAccessToken(auth, token) को कॉल करने के लिए करें.

    const provider = new OAuthProvider('apple.com');
    provider.addScope('email');
    provider.addScope('name');
    
    const auth = getAuth();
    signInWithPopup(auth, provider).then(result => {
      // Get the Apple OAuth access token.
      const credential = OAuthProvider.credentialFromResult(result);
      const accessToken = credential.accessToken;
    
      // Revoke the Apple OAuth access token.
      revokeAccessToken(auth, accessToken)
        .then(() => {
          // Token revoked.
    
          // Delete the user account.
          // ...
        })
        .catch(error => {
          // An error happened.
          // ...
        });
    });
    
  3. आखिर में, उपयोगकर्ता खाता और उससे जुड़ा सारा डेटा मिटाएं.

बेहतर सुविधा: Node.js में Firebase की मदद से पुष्टि करें

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

  1. उपयोगकर्ता के Apple खाते से साइन इन करें और उसका Apple ID टोकन पाएं. इसे कई तरीकों से पूरा किया जा सकता है. उदाहरण के लिए, अगर आपके Node.js ऐप्लिकेशन में ब्राउज़र का फ़्रंट एंड है:

    1. अपने बैकएंड पर, एक रैंडम स्ट्रिंग (“नॉंस”) जनरेट करें और इसके SHA256 हैश को कंप्यूट करें. नॉन्स एक बार इस्तेमाल किया जाने वाला ऐसा मान है जिसका इस्तेमाल आप अपने बैकएंड और Apple के पुष्टि सर्वर के बीच एक सिंगल दोतरफ़ा यात्रा की पुष्टि करने के लिए करते हैं.

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

      const crypto = require("crypto");
      const string_decoder = require("string_decoder");
      
      // Generate a new random string for each sign-in
      const generateNonce = (length) => {
        const decoder = new string_decoder.StringDecoder("ascii");
        const buf = Buffer.alloc(length);
        let nonce = "";
        while (nonce.length < length) {
          crypto.randomFillSync(buf);
          nonce = decoder.write(buf);
        }
        return nonce.slice(0, length);
      };
      
      const unhashedNonce = generateNonce(10);
      
      // SHA256-hashed nonce in hex
      const hashedNonceHex = crypto.createHash('sha256')
        .update(unhashedNonce).digest().toString('hex');

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

      const crypto = require("crypto");
      const string_decoder = require("string_decoder");
      
      // Generate a new random string for each sign-in
      const generateNonce = function(length) {
        const decoder = new string_decoder.StringDecoder("ascii");
        const buf = Buffer.alloc(length);
        var nonce = "";
        while (nonce.length < length) {
          crypto.randomFillSync(buf);
          nonce = decoder.write(buf);
        }
        return nonce.slice(0, length);
      };
      
      const unhashedNonce = generateNonce(10);
      
      // SHA256-hashed nonce in hex
      const hashedNonceHex = crypto.createHash('sha256')
        .update(unhashedNonce).digest().toString('hex');
    2. अपने साइन-इन पेज पर, 'Apple से साइन इन करें' कॉन्फ़िगरेशन में हैश की गई नॉन्स डालें:

      <script src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js"></script>
      <div id="appleid-signin" data-color="black" data-border="true" data-type="sign in"></div>
      <script>
          AppleID.auth.init({
              clientId: YOUR_APPLE_CLIENT_ID,
              scope: 'name email',
              redirectURI: URL_TO_YOUR_REDIRECT_HANDLER,  // See the next step.
              state: '[STATE]',  // Optional value that Apple will send back to you
                                 // so you can return users to the same context after
                                 // they sign in.
              nonce: HASHED_NONCE  // The hashed nonce you generated in the previous step.
          });
      </script>
      
    3. पोस्ट किए गए पुष्टि वाले रिस्पॉन्स सर्वर-साइड से Apple आईडी टोकन पाएं:

      app.post('/redirect', (req, res) => {
        const savedState = req.cookies.__session;
        const code = req.body.code;
        const state = req.body.state;
        const appleIdToken = req.body.id_token;
        if (savedState !== state || !code) {
          res.status(403).send('403: Permission denied');
        } else {
          // Sign in with Firebase using appleIdToken. (See next step).
        }
      });
      

    Apple से साइन इन करने के लिए, अपना वेबपेज कॉन्फ़िगर करना भी देखें.

  2. आपको उपयोगकर्ता का Apple ID टोकन मिलने के बाद, क्रेडेंशियल ऑब्जेक्ट बनाने के लिए इसका इस्तेमाल करें और फिर उपयोगकर्ता को क्रेडेंशियल के साथ साइन इन करें:

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

    import { getAuth, signInWithCredential, OAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    
    // Build Firebase credential with the Apple ID token.
    const provider = new OAuthProvider('apple.com');
    const authCredential = provider.credential({
      idToken: appleIdToken,
      rawNonce: unhashedNonce,
    });
    
    // Sign in with credential form the Apple user.
    signInWithCredential(auth, authCredential)
      .then((result) => {
        // User signed in.
      })
      .catch((error) => {
        // An error occurred. If error.code == 'auth/missing-or-invalid-nonce',
        // make sure you're sending the SHA256-hashed nonce as a hex string
        // with your request to Apple.
        console.log(error);
      });

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

    // Build Firebase credential with the Apple ID token.
    const provider = new firebase.auth.OAuthProvider('apple.com');
    const authCredential = provider.credential({
      idToken: appleIdToken,
      rawNonce: unhashedNonce,
    });
    
    // Sign in with credential form the Apple user.
    firebase.auth().signInWithCredential(authCredential)
      .then((result) => {
        // User signed in.
      })
      .catch((error) => {
        // An error occurred. If error.code == 'auth/missing-or-invalid-nonce',
        // make sure you're sending the SHA256-hashed nonce as a hex string
        // with your request to Apple.
        console.log(error);
      });

अगले चरण

जब कोई उपयोगकर्ता पहली बार साइन इन करता है, तो एक नया उपयोगकर्ता खाता बनाया जाता है और उपयोगकर्ता के क्रेडेंशियल से लिंक किया जाता है. इन क्रेडेंशियल में उपयोगकर्ता नाम और पासवर्ड, फ़ोन नंबर या पुष्टि करने वाली सेवा की जानकारी शामिल है. यह नया खाता आपके 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.
});