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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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