ईमेल कार्रवाइयों में पासिंग स्टेट

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

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

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

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

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

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

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

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

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

तरीका जानकारी
setUrl(String url)

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

  • जब लिंक को वेब ऐक्शन विजेट में हैंडल किया जाता है, तो यह continueUrl क्वेरी पैरामीटर में डीप लिंक होता है.
  • जब लिंक को सीधे ऐप्लिकेशन में हैंडल किया जाता है, तो यह डाइनैमिक लिंक के डीप लिंक में continueUrl क्वेरी पैरामीटर होता है.
setIOSBundleId(String iOSBundleId) iOS बंडल आईडी सेट करता है. ऐसा करने से, iOS ऐप्लिकेशन में लिंक इंस्टॉल होने पर उसे खोलने की कोशिश की जाएगी. iOS ऐप्लिकेशन को Console में रजिस्टर करना ज़रूरी है.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Android पैकेज का नाम सेट करता है. ऐसा करने से, Android ऐप्लिकेशन में लिंक इंस्टॉल होने पर उसे खोलने की कोशिश की जाएगी. अगर installIfNotAvailable को true पर सेट किया गया है, तो इससे यह तय होता है कि अगर Android ऐप्लिकेशन आपके डिवाइस पर काम करता है और ऐप्लिकेशन पहले से इंस्टॉल नहीं है, तो उसे इंस्टॉल करना है या नहीं. अगर कम से कम वर्शन की जानकारी दी गई है और ऐप्लिकेशन का पुराना वर्शन इंस्टॉल है, तो उपयोगकर्ता को ऐप्लिकेशन अपग्रेड करने के लिए Play Store पर ले जाया जाएगा. Android ऐप्लिकेशन को कंसोल में रजिस्टर करना ज़रूरी है.
setHandleCodeInApp(boolean status) ईमेल की कार्रवाई का लिंक, मोबाइल ऐप्लिकेशन में खोला जाएगा या वेब लिंक में. डिफ़ॉल्ट रूप से गलत पर सेट होती है. अगर नीति को 'सही है' पर सेट किया जाता है, तो ऐक्शन कोड लिंक को यूनिवर्सल लिंक या Android ऐप्लिकेशन लिंक के तौर पर भेजा जाएगा. इंस्टॉल होने पर, इसे ऐप्लिकेशन में खुलेगा. गलत स्थिति में, कोड को पहले वेब विजेट पर भेजा जाएगा और फिर 'जारी रखें' पर, इंस्टॉल किए जाने पर ऐप्लिकेशन पर रीडायरेक्ट किया जाएगा.
setDynamicLinkDomain(String dynamicLinkDomain) यह डाइनैमिक लिंक के डोमेन (या सबडोमेन) को मौजूदा लिंक के लिए सेट करता है, ताकि उसे Firebase डाइनैमिक लिंक का इस्तेमाल करके खोला जा सके. हर प्रोजेक्ट के लिए, एक से ज़्यादा डाइनैमिक लिंक डोमेन कॉन्फ़िगर किए जा सकते हैं. इस फ़ील्ड की मदद से, किसी एक प्रोजेक्ट को आसानी से चुना जा सकता है. अगर कोई डोमेन नहीं दिया गया है, तो डिफ़ॉल्ट रूप से पहला डोमेन इस्तेमाल किया जाता है.

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

Kotlin+KTX

val auth = Firebase.auth
val user = auth.currentUser!!

val url = "http://www.example.com/verify?uid=" + user.uid
val actionCodeSettings = ActionCodeSettings.newBuilder()
    .setUrl(url)
    .setIOSBundleId("com.example.ios")
    // The default for this is populated with the current android package name.
    .setAndroidPackageName("com.example.android", false, null)
    .build()

user.sendEmailVerification(actionCodeSettings)
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "Email sent.")
        }
    }

Java

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

String url = "http://www.example.com/verify?uid=" + user.getUid();
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build();

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email 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. iOS ऐप्लिकेशन कॉन्फ़िगर करना:

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

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

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

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

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

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

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

आप यह तय कर सकते हैं कि क्या आप पहले अपने मोबाइल ऐप्लिकेशन में कार्रवाई कोड लिंक को हैंडल करना चाहते हैं, बशर्ते वह इंस्टॉल हो. Android ऐप्लिकेशन में, आपके पास installIfNotAvailable बूलियन के ज़रिए यह बताने की सुविधा भी होती है कि ऐप्लिकेशन को अगर डिवाइस पर काम करता हो और वह पहले से इंस्टॉल न हो, तो उसे इंस्टॉल किया जाए. अगर लिंक पर ऐसे डिवाइस से क्लिक किया जाता है जिस पर मोबाइल ऐप्लिकेशन काम नहीं करता तो लिंक को किसी वेब पेज से खोला जाता है. ऐसा करने के लिए, setHandleCodeInApp(true) को ActionCodeSettings.Builder ऑब्जेक्ट में कॉल करें. मोबाइल ऐप्लिकेशन के Android पैकेज का नाम या iOS बंडल आईडी भी बताना होगा.

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

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

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