ईमेल क्रियाओं में राज्य पास करना

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

यह निम्नलिखित सामान्य परिदृश्यों में बेहद उपयोगी हो सकता है:

  • एक उपयोगकर्ता, जो वर्तमान में लॉग इन नहीं है, उस सामग्री तक पहुंचने का प्रयास कर सकता है जिसके लिए उपयोगकर्ता को साइन इन करना आवश्यक है। हालाँकि, उपयोगकर्ता अपना पासवर्ड भूल गया होगा और इसलिए रीसेट पासवर्ड प्रवाह को ट्रिगर कर सकता है। प्रवाह के अंत में, उपयोगकर्ता ऐप के उस अनुभाग पर वापस जाने की उम्मीद करता है जिसे वे एक्सेस करने का प्रयास कर रहे थे।

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

  • सामान्य तौर पर, जब कोई उपयोगकर्ता ऐप्पल ऐप पर पासवर्ड रीसेट या ईमेल सत्यापन प्रवाह शुरू करता है तो वे ऐप के भीतर प्रवाह को पूरा करने की उम्मीद करते हैं; जारी यूआरएल के माध्यम से राज्य को पारित करने की क्षमता इसे संभव बनाती है।

जारी यूआरएल के माध्यम से राज्य को पारित करने की क्षमता होना एक शक्तिशाली सुविधा है जो फायरबेस ऑथ प्रदान करता है और जो उपयोगकर्ता अनुभव को महत्वपूर्ण रूप से बढ़ा सकता है।

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

जारी यूआरएल को सुरक्षित रूप से पास करने के लिए, यूआरएल के डोमेन को फायरबेस कंसोल में श्वेतसूची में डालने की आवश्यकता होगी। यह प्रमाणीकरण अनुभाग में इस डोमेन को साइन-इन विधि टैब के अंतर्गत अधिकृत डोमेन की सूची में जोड़कर किया जाता है, यदि यह पहले से वहां नहीं है।

पासवर्ड रीसेट ईमेल या सत्यापन ईमेल भेजते समय एक FIRActionCodeSettings उदाहरण प्रदान करना आवश्यक है। यह इंटरफ़ेस निम्नलिखित पैरामीटर लेता है:

तीव्र

पैरामीटर प्रकार विवरण
URL डोरी

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

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

उद्देश्य सी

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

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

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

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

तीव्र


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

उद्देश्य सी

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

मोबाइल एप्लिकेशन में खोले जाने वाले लिंक को भेजते समय फायरबेस ऑथ फायरबेस डायनेमिक लिंक का उपयोग करता है। इस सुविधा का उपयोग करने के लिए, डायनामिक लिंक को फायरबेस कंसोल में कॉन्फ़िगर करना होगा।

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

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

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

      example.page.link

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

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

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

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

वेब एप्लिकेशन में ईमेल क्रियाओं को संभालना

आप निर्दिष्ट कर सकते हैं कि क्या आप पहले किसी वेब एप्लिकेशन से एक्शन कोड लिंक को संभालना चाहते हैं और फिर सफल समापन के बाद किसी अन्य वेब पेज या मोबाइल एप्लिकेशन पर रीडायरेक्ट करना चाहते हैं, बशर्ते कि मोबाइल एप्लिकेशन उपलब्ध हो। यह FIRActionCodeSettings (Obj-C) या ActionCodeSettings (स्विफ्ट) ऑब्जेक्ट में handleCodeInApp को false पर सेट करके किया जाता है। जबकि बंडल आईडी या एंड्रॉइड पैकेज नाम की आवश्यकता नहीं है, उन्हें प्रदान करने से उपयोगकर्ता को ईमेल एक्शन कोड पूरा होने पर निर्दिष्ट ऐप पर वापस रीडायरेक्ट करने की अनुमति मिल जाएगी।

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

इस मामले में, continueURL क्वेरी पैरामीटर के भीतर का लिंक एक FDL लिंक होगा जिसका पेलोड ActionCodeSettings ऑब्जेक्ट में निर्दिष्ट URL है। जबकि आप बिना किसी अतिरिक्त निर्भरता के अपने ऐप से आने वाले लिंक को रोक सकते हैं और संभाल सकते हैं, हम आपके लिए डीप लिंक को पार्स करने के लिए एफडीएल क्लाइंट लाइब्रेरी का उपयोग करने की सलाह देते हैं।

ईमेल सत्यापन जैसे ईमेल कार्यों को संभालते समय, oobCode क्वेरी पैरामीटर से एक्शन कोड को डीप लिंक से पार्स किया जाना चाहिए और फिर परिवर्तन को प्रभावी करने के लिए applyActionCode के माध्यम से लागू किया जाना चाहिए, यानी ईमेल को सत्यापित किया जाना चाहिए।

मोबाइल एप्लिकेशन में ईमेल क्रियाओं को संभालना

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

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

ईमेल सत्यापन जैसे ईमेल कार्यों को संभालते समय, oobCode क्वेरी पैरामीटर से एक्शन कोड को डीप लिंक से पार्स किया जाना चाहिए और फिर परिवर्तन को प्रभावी करने के लिए applyActionCode के माध्यम से लागू किया जाना चाहिए, यानी ईमेल को सत्यापित किया जाना चाहिए।