ईमेल कार्रवाइयों में पास होने की स्थिति

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

इन सामान्य स्थितियों में यह बहुत मददगार साबित हो सकता है:

  • अगर कोई उपयोगकर्ता फ़िलहाल लॉग इन नहीं है, तो हो सकता है कि वह ऐसा कॉन्टेंट ऐक्सेस करने की कोशिश कर रहा हो जिसके लिए उसे साइन इन करना ज़रूरी है. हालांकि, हो सकता है कि उपयोगकर्ता अपना पासवर्ड भूल गया हो. इस वजह से, पासवर्ड रीसेट हो जाता है. फ़्लो के आखिर में, उपयोगकर्ता को ऐप्लिकेशन के उस सेक्शन पर वापस जाना होता है जिसे वह ऐक्सेस करने की कोशिश कर रहा था.

  • ऐसा हो सकता है कि कोई ऐप्लिकेशन सिर्फ़ पुष्टि किए गए खातों को ऐक्सेस करने की सुविधा दे. उदाहरण के लिए, न्यूज़लेटर ऐप्लिकेशन की सदस्यता लेने से पहले, लोगों को अपने ईमेल पते की पुष्टि करने के लिए कहना पड़ सकता है. उपयोगकर्ता को ईमेल पते की पुष्टि की प्रक्रिया से गुज़रना होगा और उसे उम्मीद होगी कि वह अपनी सदस्यता पूरी करने के लिए ऐप्लिकेशन पर वापस आएगा.

  • आम तौर पर, जब कोई उपयोगकर्ता Apple के किसी ऐप्लिकेशन पर पासवर्ड रीसेट या ईमेल से पुष्टि करने की प्रक्रिया शुरू करता है, तो वह उम्मीद करता है कि वह ऐप्लिकेशन में ही फ़्लो पूरा कर देगा. 'जारी रखें' यूआरएल की मदद से 'स्टेटस पास करना' सुविधा की मदद से ऐसा किया जा सकता है.

जारी रखने वाले यूआरएल के ज़रिए स्थिति पास करने की सुविधा एक बेहतरीन सुविधा है. Firebase Auth इस सुविधा से उपयोगकर्ता अनुभव को काफ़ी बेहतर बनाती है.

पास होने की स्थिति/ईमेल पर की जाने वाली कार्रवाइयों में यूआरएल का इस्तेमाल जारी रखें

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

पासवर्ड रीसेट ईमेल या पुष्टि करने वाला ईमेल भेजते समय, FIRActionCodeSettings इंस्टेंस देना ज़रूरी है. यह इंटरफ़ेस नीचे दिए गए पैरामीटर का इस्तेमाल करता है:

Swift

पैरामीटर टाइप जानकारी
URL स्ट्रिंग

यह ऐसा लिंक (स्टेट या जारी रखें यूआरएल) सेट करता है जिसका अलग-अलग मतलब अलग-अलग होता है:

  • जब लिंक को वेब ऐक्शन विजेट में हैंडल किया जाता है, तो यह continueUrl क्वेरी पैरामीटर में मौजूद डीप लिंक होता है.
  • जब लिंक को सीधे ऐप्लिकेशन में हैंडल किया जाता है, तो यह डाइनैमिक लिंक के डीप लिंक में continueUrl क्वेरी पैरामीटर होता है.
iOSBundleID स्ट्रिंग बंडल आईडी सेट करता है. ऐसा करने से, Apple के ऐप्लिकेशन में मौजूद लिंक को खोलने की कोशिश की जाएगी. हालांकि, इसके लिए ज़रूरी है कि वह ऐप्लिकेशन इंस्टॉल हो. ऐप्लिकेशन, Console में रजिस्टर होना चाहिए. अगर कोई बंडल आईडी नहीं दिया गया है, तो इस फ़ील्ड का मान ऐप्लिकेशन के मुख्य बंडल के बंडल आईडी पर सेट कर दिया जाता है.
androidPackageName स्ट्रिंग Android पैकेज का नाम सेट करता है. ऐसा करने से, Android ऐप्लिकेशन के इंस्टॉल होने पर, उस लिंक को उसमें खोलने की कोशिश की जाएगी.
androidInstallIfNotAvailable बूल इससे पता चलता है कि अगर डिवाइस पर Android ऐप्लिकेशन काम करता है और उसे पहले से इंस्टॉल नहीं किया गया है, तो उसे इंस्टॉल करना है या नहीं. अगर इस फ़ील्ड को PackageName के बिना दिया जाता है, तो एक गड़बड़ी दिखती है. इसमें यह बताया जाता है कि इस फ़ील्ड के साथ-साथ PackageName को भी दिया जाना चाहिए.
androidMinimumVersion स्ट्रिंग ऐप्लिकेशन का वह कम से कम वर्शन जो इस फ़्लो में काम करता हो. अगर कम से कम वर्शन के बारे में बताया गया है और ऐप्लिकेशन का पुराना वर्शन इंस्टॉल किया गया है, तो ऐप्लिकेशन को अपग्रेड करने के लिए उपयोगकर्ता को Play Store पर ले जाया जाता है. Android ऐप्लिकेशन को Console में रजिस्टर करना ज़रूरी है.
handleCodeInApp बूल ईमेल कार्रवाई के लिंक को मोबाइल ऐप्लिकेशन या वेब लिंक में खोला जाएगा या नहीं. डिफ़ॉल्ट रूप से, यह वैल्यू 'गलत' पर सेट होती है. अगर नीति को 'सही है' पर सेट किया जाता है, तो ऐक्शन कोड के लिंक को यूनिवर्सल लिंक या Android ऐप्लिकेशन के लिंक के तौर पर भेजा जाएगा. अगर ऐप्लिकेशन इंस्टॉल हो, तो उसे ऐप्लिकेशन में खोला जाएगा. गलत मामले में, कोड को सबसे पहले वेब विजेट पर भेजा जाएगा. इसके बाद, अगर ऐप्लिकेशन इंस्टॉल हो, तो जारी रखने पर, उसे ऐप्लिकेशन पर रीडायरेक्ट किया जाएगा.
dynamicLinkDomain स्ट्रिंग अगर मौजूदा लिंक को Firebase डाइनैमिक लिंक का इस्तेमाल करके खोला जाना है, तो यह डाइनैमिक लिंक डोमेन (या सबडोमेन) को मौजूदा लिंक के लिए इस्तेमाल करता है. हर प्रोजेक्ट में एक से ज़्यादा डाइनैमिक लिंक डोमेन कॉन्फ़िगर किए जा सकते हैं. इस फ़ील्ड की मदद से, किसी एक डोमेन को साफ़ तौर पर चुना जा सकता है. अगर कोई डोमेन नहीं दिया गया है, तो डिफ़ॉल्ट रूप से पहले डोमेन का इस्तेमाल किया जाता है.

Objective-C

पैरामीटर टाइप जानकारी
URL एनएसस्ट्रिंग

यह ऐसा लिंक (स्टेट या जारी रखें यूआरएल) सेट करता है जिसका अलग-अलग मतलब अलग-अलग होता है:

  • जब लिंक को वेब ऐक्शन विजेट में हैंडल किया जाता है, तो यह continueUrl क्वेरी पैरामीटर में मौजूद डीप लिंक होता है.
  • जब लिंक को सीधे ऐप्लिकेशन में हैंडल किया जाता है, तो यह डाइनैमिक लिंक के डीप लिंक में continueUrl क्वेरी पैरामीटर होता है.
iOSBundleID एनएसस्ट्रिंग बंडल आईडी सेट करता है. ऐसा करने से, Apple के ऐप्लिकेशन में मौजूद लिंक को खोलने की कोशिश की जाएगी. हालांकि, इसके लिए ज़रूरी है कि वह ऐप्लिकेशन इंस्टॉल हो. ऐप्लिकेशन, Console में रजिस्टर होना चाहिए.
androidPackageName एनएसस्ट्रिंग Android पैकेज का नाम सेट करता है. ऐसा करने से, Android ऐप्लिकेशन के इंस्टॉल होने पर, उस लिंक को उसमें खोलने की कोशिश की जाएगी.
androidInstallIfNotAvailable BOOL यह तय करता है कि अगर डिवाइस पर Android ऐप्लिकेशन काम करता है और उसे पहले से इंस्टॉल नहीं किया गया है, तो उसे इंस्टॉल करना है या नहीं. अगर इस फ़ील्ड को PackageName के बिना दिया जाता है, तो एक गड़बड़ी दिखती है. इसमें यह बताया जाता है कि इस फ़ील्ड के साथ-साथ PackageName को भी दिया जाना चाहिए.
androidMinimumVersion एनएसस्ट्रिंग ऐप्लिकेशन का वह कम से कम वर्शन जो इस फ़्लो में काम करता हो. अगर कम से कम वर्शन के बारे में बताया गया है और ऐप्लिकेशन का पुराना वर्शन इंस्टॉल किया गया है, तो ऐप्लिकेशन को अपग्रेड करने के लिए उपयोगकर्ता को Play Store पर ले जाया जाता है. Android ऐप्लिकेशन को Console में रजिस्टर करना ज़रूरी है.
handleCodeInApp BOOL ईमेल कार्रवाई के लिंक को मोबाइल ऐप्लिकेशन या वेब लिंक में खोला जाएगा या नहीं. डिफ़ॉल्ट रूप से, यह वैल्यू 'गलत' पर सेट होती है. अगर नीति को 'सही है' पर सेट किया जाता है, तो ऐक्शन कोड के लिंक को यूनिवर्सल लिंक या Android ऐप्लिकेशन के लिंक के तौर पर भेजा जाएगा. अगर ऐप्लिकेशन इंस्टॉल हो, तो उसे ऐप्लिकेशन में खोला जाएगा. गलत मामले में, कोड को सबसे पहले वेब विजेट पर भेजा जाएगा. इसके बाद, अगर ऐप्लिकेशन इंस्टॉल हो, तो जारी रखने पर, उसे ऐप्लिकेशन पर रीडायरेक्ट किया जाएगा.
dynamicLinkDomain एनएसस्ट्रिंग अगर मौजूदा लिंक को Firebase डाइनैमिक लिंक का इस्तेमाल करके खोला जाना है, तो यह डाइनैमिक लिंक डोमेन (या सबडोमेन) को मौजूदा लिंक के लिए इस्तेमाल करता है. हर प्रोजेक्ट में एक से ज़्यादा डाइनैमिक लिंक डोमेन कॉन्फ़िगर किए जा सकते हैं. इस फ़ील्ड की मदद से, किसी एक डोमेन को साफ़ तौर पर चुना जा सकता है. अगर कोई डोमेन नहीं दिया गया है, तो डिफ़ॉल्ट रूप से पहले डोमेन का इस्तेमाल किया जाता है.

नीचे दिए गए उदाहरण में, कस्टम डाइनैमिक लिंक डोमेन example.page.link का इस्तेमाल करके, ईमेल की पुष्टि करने वाले लिंक को भेजने का तरीका बताया गया है. यह लिंक, मोबाइल ऐप्लिकेशन में सबसे पहले Firebase डाइनैमिक लिंक के तौर पर खुलेगा. यह लिंक, कस्टम डाइनैमिक लिंक डोमेन example.page.link का इस्तेमाल करता है. iOS ऐप्लिकेशन com.example.ios या Android ऐप्लिकेशन com.example.android, अगर ऐप्लिकेशन पहले से इंस्टॉल न होने और कम से कम वर्शन 12 है, तो ऐप्लिकेशन इंस्टॉल हो जाएगा. डीप लिंक में, यूआरएल का पेलोड जारी रखेंhttps://www.example.com/?email=user@example.com शामिल होगा.

Swift


var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minimumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

Firebase पुष्टि करने की सुविधा, Firebase डाइनैमिक लिंक का इस्तेमाल करके ऐसा लिंक भेजती है जिसे मोबाइल ऐप्लिकेशन में खोला जा सकता है. इस सुविधा का इस्तेमाल करने के लिए, डाइनैमिक लिंक को Firebase कंसोल में कॉन्फ़िगर करना होगा.

  1. Firebase डाइनैमिक लिंक चालू करें:

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

      अगर आपने पहले ही डाइनैमिक लिंक डोमेन बना लिया है, तो उस पर ध्यान दें. आम तौर पर, डाइनैमिक लिंक डोमेन का उदाहरण नीचे दिया गया है:

      example.page.link

      आपको इस वैल्यू की ज़रूरत तब होगी, जब Apple या Android ऐप्लिकेशन को इनकमिंग लिंक को इंटरसेप्ट करने के लिए कॉन्फ़िगर किया जा रहा हो.

  2. Android ऐप्लिकेशन कॉन्फ़िगर करना:

    1. अगर आपको अपने Android ऐप्लिकेशन से ये लिंक मैनेज करने हैं, तो Android पैकेज का नाम Firebase कंसोल प्रोजेक्ट की सेटिंग में तय करना ज़रूरी है. इसके अलावा, ऐप्लिकेशन सर्टिफ़िकेट का SHA-1 और SHA-256 भी देना होगा.
    2. आपको AndroidManifest.xml फ़ाइल में डीप लिंक के लिए, इंटेंट फ़िल्टर को भी कॉन्फ़िगर करना होगा.
    3. इस बारे में ज़्यादा जानने के लिए, Android डाइनैमिक लिंक पाने से जुड़े निर्देश देखें.
  3. Apple ऐप्लिकेशन कॉन्फ़िगर करना:

    1. अगर आप अपने ऐप्लिकेशन से इन लिंक को मैनेज करना चाहते हैं, तो बंडल आईडी को Firebase कंसोल प्रोजेक्ट सेटिंग में तय करना ज़रूरी है. इसके अलावा, ऐप स्टोर आईडी और Apple डेवलपर टीम आईडी को भी बताना ज़रूरी है.
    2. आपको अपने ऐप्लिकेशन की क्षमताओं में, एफ़डीएल यूनिवर्सल लिंक डोमेन को असोसिएटेड डोमेन के तौर पर भी कॉन्फ़िगर करना होगा.
    3. अगर आपको अपना ऐप्लिकेशन iOS 8 और इससे पहले के वर्शन पर उपलब्ध कराना है, तो आपको अपने बंडल आईडी को इनकमिंग यूआरएल के लिए, कस्टम स्कीम के तौर पर सेट करना होगा.
    4. इस बारे में ज़्यादा जानने के लिए, Apple प्लैटफ़ॉर्म के डाइनैमिक लिंक पाने के निर्देश देखें.

किसी वेब ऐप्लिकेशन में ईमेल कार्रवाइयों को मैनेज करना

यह तय किया जा सकता है कि पहले किसी वेब ऐप्लिकेशन से, ऐक्शन कोड के लिंक को हैंडल करना है या नहीं. इसके बाद, काम पूरा होने के बाद, दूसरे वेब पेज या मोबाइल ऐप्लिकेशन पर रीडायरेक्ट किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि मोबाइल ऐप्लिकेशन उपलब्ध हो. ऐसा करने के लिए, FIRActionCodeSettings (Obj-C) या ActionCodeSettings (Swift) ऑब्जेक्ट में handleCodeInApp को false पर सेट करें. बंडल आईडी या Android पैकेज का नाम डालना ज़रूरी नहीं है. हालांकि, इन्हें देने से उपयोगकर्ता, ईमेल कार्रवाई कोड पूरा होने पर, बताए गए ऐप्लिकेशन पर वापस रीडायरेक्ट कर पाएगा.

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

इस मामले में, continueURL क्वेरी पैरामीटर में मौजूद लिंक एक एफ़डीएल लिंक होगा, जिसका पेलोड ActionCodeSettings ऑब्जेक्ट में बताया गया URL है. आपके पास किसी अन्य डिपेंडेंसी के बिना, अपने ऐप्लिकेशन से आने वाले लिंक को रोकने और मैनेज करने का विकल्प है. हालांकि, हमारा सुझाव है कि डीप लिंक को पार्स करने के लिए, एफ़डीएल क्लाइंट लाइब्रेरी का इस्तेमाल करें.

ईमेल से जुड़ी कार्रवाइयों को मैनेज करते समय, oobCode क्वेरी पैरामीटर से मिले ऐक्शन कोड को डीप लिंक से पार्स करना होगा. इसके बाद, बदलाव को लागू करने के लिए applyActionCode से लागू करना होगा, यानी कि पुष्टि के लिए ईमेल.

मोबाइल ऐप्लिकेशन में ईमेल कार्रवाइयां मैनेज करना

आप यह बता सकते हैं कि क्या आप अपने मोबाइल ऐप्लिकेशन में कार्रवाई कोड लिंक को पहले हैंडल करना चाहते हैं, बशर्ते कि वह इंस्टॉल हो. Android ऐप्लिकेशन में, आप androidInstallIfNotAvailable के ज़रिए यह भी बता सकते हैं कि ऐप्लिकेशन को इंस्टॉल किया जाना चाहिए या नहीं. ऐसा तब किया जा सकता है, जब डिवाइस पर यह सुविधा काम करती हो और वह पहले से इंस्टॉल न हो. अगर लिंक पर किसी ऐसे डिवाइस से क्लिक किया जाता है जो मोबाइल ऐप्लिकेशन के साथ काम नहीं करता, तो उसे किसी वेब पेज से खोला जाता है. ऐसा करने के लिए, FIRActionCodeSettings (Obj-C) या ActionCodeSettings (Swift) ऑब्जेक्ट में handleCodeInApp को true पर सेट करें. मोबाइल ऐप्लिकेशन के Android पैकेज का नाम या बंडल आईडी भी बताना ज़रूरी है.यहां इस्तेमाल किया जाने वाला फ़ॉलबैक वेब यूआरएल, जब कोई मोबाइल ऐप्लिकेशन उपलब्ध नहीं होता है, तो उसे ईमेल कार्रवाई टेंप्लेट सेक्शन में कॉन्फ़िगर किया जाता है. डिफ़ॉल्ट तौर पर, सभी प्रोजेक्ट के लिए एक डिफ़ॉल्ट वैल्यू असाइन की जाती है. ईमेल कार्रवाई हैंडलर को पसंद के मुताबिक बनाने के तरीके के बारे में ज़्यादा जानने के लिए, ईमेल हैंडलर को पसंद के मुताबिक बनाना लेख पढ़ें.

इस मामले में, उपयोगकर्ता को भेजा गया मोबाइल ऐप्लिकेशन लिंक एक एफ़डीएल लिंक होगा. इसका पेलोड, ऐक्शन कोड यूआरएल है और इसे Console में कॉन्फ़िगर किया गया है. इसके लिए, oobCode, mode, apiKey, और continueUrl क्वेरी पैरामीटर इस्तेमाल किए गए हैं. बाद वाला कोड, FIRActionCodeSettings (Obj-C) या ActionCodeSettings (Swift) ऑब्जेक्ट में बताया गया ओरिजनल URL होगा. आपके पास किसी अतिरिक्त डिपेंडेंसी के बिना, अपने ऐप्लिकेशन के आने वाले लिंक को रोकने और मैनेज करने का विकल्प है. हालांकि, हमारा सुझाव है कि डीप लिंक को पार्स करने के लिए, एफ़डीएल क्लाइंट लाइब्रेरी का इस्तेमाल करें. कार्रवाई कोड को सीधे मोबाइल ऐप्लिकेशन से उसी तरह लागू किया जा सकता है जिस तरह इसे ईमेल हैंडलर कस्टमाइज़ करना सेक्शन में बताए गए वेब फ़्लो से मैनेज किया जाता है.

ईमेल से जुड़ी कार्रवाइयों को मैनेज करते समय, oobCode क्वेरी पैरामीटर से मिले ऐक्शन कोड को डीप लिंक से पार्स करना होगा. इसके बाद, बदलाव को लागू करने के लिए applyActionCode से लागू करना होगा, यानी कि पुष्टि के लिए ईमेल.