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

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

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

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

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

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

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

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

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

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

तीव्र

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

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

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

उद्देश्य सी

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

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

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

निम्न उदाहरण दिखाता है कि एक ईमेल सत्यापन लिंक कैसे भेजा जाए जो कस्टम डायनेमिक लिंक डोमेन example.page.link (iOS ऐप com.example.ios या Android ऐप com.example.android जहां ऐप इंस्टॉल हो जाएगा अगर पहले से इंस्टॉल नहीं है और न्यूनतम संस्करण 12 है)। डीप लिंक में जारी URL पेलोड 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,
                                         minumumVersion:"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. 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 कंसोल प्रोजेक्ट सेटिंग में निर्दिष्ट करने की आवश्यकता है। इसके अलावा, ऐप स्टोर आईडी और ऐप्पल डेवलपर टीम आईडी भी निर्दिष्ट करने की आवश्यकता है।
    2. आपको अपनी एप्लिकेशन क्षमताओं में FDL यूनिवर्सल लिंक डोमेन को संबद्ध डोमेन के रूप में कॉन्फ़िगर करने की भी आवश्यकता होगी।
    3. यदि आप अपने एप्लिकेशन को iOS संस्करण 8 और उससे कम में वितरित करने की योजना बना रहे हैं, तो आपको आने वाले URL के लिए अपनी बंडल आईडी को एक कस्टम योजना के रूप में सेट करना होगा।
    4. इस बारे में अधिक जानकारी के लिए, Apple प्लेटफ़ॉर्म डायनेमिक लिंक निर्देश प्राप्त करना देखें।

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

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

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

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

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

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

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

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

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