ইমেল অ্যাকশনে পাসিং স্টেট

পাসওয়ার্ড রিসেট করার জন্য বা ব্যবহারকারীর ইমেল যাচাই করার জন্য ইমেল অ্যাকশন পাঠানোর সময় আপনি একটি অবিরত URL-এর মাধ্যমে রাজ্য পাস করতে পারেন। এটি ব্যবহারকারীকে অ্যাকশন শেষ হওয়ার পরে অ্যাপে ফিরে যাওয়ার ক্ষমতা প্রদান করে। উপরন্তু, আপনি একটি ওয়েব পৃষ্ঠার পরিবর্তে ইনস্টল করা হলে মোবাইল অ্যাপ্লিকেশন থেকে সরাসরি ইমেল অ্যাকশন লিঙ্ক পরিচালনা করবেন কিনা তা নির্দিষ্ট করতে পারেন৷

নিম্নলিখিত সাধারণ পরিস্থিতিতে এটি অত্যন্ত দরকারী হতে পারে:

  • একজন ব্যবহারকারী, বর্তমানে লগ ইন করা নেই, সে এমন সামগ্রী অ্যাক্সেস করার চেষ্টা করতে পারে যার জন্য ব্যবহারকারীকে সাইন ইন করতে হবে৷ যাইহোক, ব্যবহারকারী তাদের পাসওয়ার্ড ভুলে গেছেন এবং সেইজন্য পাসওয়ার্ড রিসেট ফ্লো ট্রিগার করতে পারেন৷ প্রবাহের শেষে, ব্যবহারকারী অ্যাপের যে বিভাগে তারা অ্যাক্সেস করার চেষ্টা করছেন সেখানে ফিরে যাওয়ার প্রত্যাশা করে।

  • একটি অ্যাপ্লিকেশন শুধুমাত্র যাচাইকৃত অ্যাকাউন্টগুলিতে অ্যাক্সেসের প্রস্তাব দিতে পারে। উদাহরণস্বরূপ, একটি নিউজলেটার ব্যবহারকারীকে সদস্যতা নেওয়ার আগে তাদের ইমেল যাচাই করতে হতে পারে। ব্যবহারকারী ইমেল যাচাইকরণ প্রবাহের মধ্য দিয়ে যাবে এবং তাদের সাবস্ক্রিপশন সম্পূর্ণ করতে অ্যাপে ফিরে যাওয়ার আশা করবে।

  • অন্যান্য ক্ষেত্রে, ব্যবহারকারী তাদের মোবাইল ডিভাইস থেকে প্রবাহ শুরু করতে পারে এবং যাচাই করার পরে ব্রাউজারের পরিবর্তে তাদের মোবাইল অ্যাপে ফিরে আসার আশা করতে পারে।

একটি অবিরত ইউআরএলের মাধ্যমে স্টেট পাস করার ক্ষমতা থাকা একটি শক্তিশালী বৈশিষ্ট্য যা Firebase Auth প্রদান করে এবং যা ব্যবহারকারীর অভিজ্ঞতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।

ইমেল অ্যাকশনে স্টেট/কন্টিনিউ ইউআরএল পাস করা

একটি অবিরত URL নিরাপদে পাস করার জন্য, URL-এর ডোমেনটিকে Firebase কনসোলে সাদা তালিকাভুক্ত করতে হবে। সাইন-ইন পদ্ধতি ট্যাবের অধীনে অনুমোদিত ডোমেনের তালিকায় এই ডোমেনটি যোগ করে প্রমাণীকরণ বিভাগে এটি করা হয় যদি এটি ইতিমধ্যে সেখানে না থাকে।

পাসওয়ার্ড রিসেট ইমেল বা যাচাইকরণ ইমেল পাঠানোর সময় একটি ActionCodeSettings উদাহরণ প্রদান করা প্রয়োজন। এটি সংশ্লিষ্ট ActionCodeSettings.Builder ক্লাসের সাথে তৈরি করা যেতে পারে যাতে নিম্নলিখিত পদ্ধতিগুলি রয়েছে:

পদ্ধতি বর্ণনা
setUrl(String url)

লিঙ্ক সেট করে (স্টেট/কন্টিনিউ ইউআরএল) যার বিভিন্ন প্রসঙ্গে বিভিন্ন অর্থ রয়েছে:

  • যখন লিঙ্কটি ওয়েব অ্যাকশন উইজেটগুলিতে পরিচালনা করা হয়, এটি continueUrl ক্যোয়ারী প্যারামিটারের গভীর লিঙ্ক।
  • যখন লিঙ্কটি সরাসরি অ্যাপে পরিচালনা করা হয়, তখন এটি ডায়নামিক লিঙ্কের গভীর লিঙ্কে continueUrl ক্যোয়ারী প্যারামিটার।
setIOSBundleId(String iOSBundleId) iOS বান্ডেল আইডি সেট করে। এটি ইনস্টল করা থাকলে এটি একটি iOS অ্যাপে লিঙ্কটি খোলার চেষ্টা করবে। iOS অ্যাপটিকে কনসোলে নিবন্ধিত করতে হবে।
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) অ্যান্ড্রয়েড প্যাকেজের নাম সেট করে। এটি ইনস্টল করা থাকলে এটি একটি অ্যান্ড্রয়েড অ্যাপে লিঙ্কটি খুলতে চেষ্টা করবে। যদি installIfNotAvailable true সেট করা থাকে, তাহলে ডিভাইসটি সমর্থন করে এবং অ্যাপটি ইতিমধ্যে ইনস্টল না থাকলে Android অ্যাপটি ইনস্টল করা হবে কিনা তা নির্দিষ্ট করে। যদি ন্যূনতম সংস্করণ নির্দিষ্ট করা থাকে, এবং অ্যাপটির একটি পুরানো সংস্করণ ইনস্টল করা থাকে, ব্যবহারকারীকে অ্যাপটি আপগ্রেড করতে প্লে স্টোরে নিয়ে যাওয়া হয়। অ্যান্ড্রয়েড অ্যাপটিকে কনসোলে নিবন্ধন করতে হবে।
setHandleCodeInApp(boolean status) ইমেল অ্যাকশন লিঙ্কটি প্রথমে একটি মোবাইল অ্যাপে বা একটি ওয়েব লিঙ্কে খোলা হবে কিনা। ডিফল্ট মিথ্যা. সত্য হিসাবে সেট করা হলে, অ্যাকশন কোড লিঙ্কটি একটি ইউনিভার্সাল লিঙ্ক বা অ্যান্ড্রয়েড অ্যাপ লিঙ্ক হিসাবে পাঠানো হবে এবং ইনস্টল করা থাকলে অ্যাপটি খোলা হবে। মিথ্যা ক্ষেত্রে, কোডটি প্রথমে ওয়েব উইজেটে পাঠানো হবে এবং তারপর চালু থাকলে অ্যাপটিতে পুনঃনির্দেশ করা হবে।
setDynamicLinkDomain(String dynamicLinkDomain) যদি Firebase ডায়নামিক লিঙ্ক ব্যবহার করে খোলা হয় তাহলে বর্তমান লিঙ্কের জন্য ব্যবহার করার জন্য ডায়নামিক লিঙ্ক ডোমেন (বা সাবডোমেন) সেট করে। যেহেতু একাধিক গতিশীল লিঙ্ক ডোমেন প্রতি প্রকল্পে কনফিগার করা যেতে পারে, এই ক্ষেত্রটি স্পষ্টভাবে একটি বেছে নেওয়ার ক্ষমতা প্রদান করে। যদি কোনটি প্রদান করা না হয়, প্রথম ডোমেনটি ডিফল্টরূপে ব্যবহৃত হয়।

নিম্নলিখিত উদাহরণটি ব্যাখ্যা করে যে কীভাবে একটি ইমেল যাচাইকরণ লিঙ্ক পাঠাতে হয় যা প্রথমে একটি ফায়ারবেস ডায়নামিক লিঙ্ক (iOS অ্যাপ com.example.ios বা Android অ্যাপ com.example.android ) হিসাবে একটি মোবাইল অ্যাপে খুলবে। ডিপ লিঙ্কটিতে অবিরত URL পেলোড থাকবে 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 Auth ফায়ারবেস ডায়নামিক লিঙ্কগুলি ব্যবহার করে একটি লিঙ্ক পাঠানোর সময় যা একটি মোবাইল অ্যাপ্লিকেশনে খোলার জন্য। এই বৈশিষ্ট্যটি ব্যবহার করার জন্য, ডায়নামিক লিঙ্কগুলিকে Firebase কনসোলে কনফিগার করতে হবে৷

  1. ফায়ারবেস ডায়নামিক লিঙ্কগুলি সক্ষম করুন:

    1. Firebase কনসোলে , Dynamic Links বিভাগ খুলুন।
    2. আপনি যদি এখনও Dynamic Links শর্তাদি গ্রহণ না করে থাকেন এবং একটি Dynamic Links ডোমেন তৈরি না করে থাকেন, তাহলে এখনই করুন৷

      আপনি যদি ইতিমধ্যেই একটি Dynamic Links ডোমেন তৈরি করে থাকেন, তবে এটি নোট করুন। একটি Dynamic Links ডোমেন সাধারণত নিম্নলিখিত উদাহরণের মত দেখায়:

      example.page.link

      ইনকামিং লিঙ্কটি আটকাতে আপনি যখন আপনার Apple বা Android অ্যাপ কনফিগার করবেন তখন আপনার এই মানটির প্রয়োজন হবে।

  2. অ্যান্ড্রয়েড অ্যাপ্লিকেশন কনফিগার করা:

    1. আপনি যদি আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশন থেকে এই লিঙ্কগুলি পরিচালনা করার পরিকল্পনা করেন, তাহলে Firebase কনসোল প্রকল্প সেটিংসে Android প্যাকেজের নাম উল্লেখ করতে হবে। এছাড়াও, আবেদনের শংসাপত্রের SHA-1 এবং SHA-256 প্রদান করতে হবে।
    2. আপনার AndroidManifest.xml ফাইলে ডিপ লিঙ্কের জন্য অভিপ্রায় ফিল্টার কনফিগার করতে হবে।
    3. এই বিষয়ে আরও জানতে, অ্যান্ড্রয়েড ডায়নামিক লিঙ্কগুলি প্রাপ্তির নির্দেশাবলী পড়ুন।
  3. iOS অ্যাপ্লিকেশন কনফিগার করা:

    1. আপনি যদি আপনার iOS অ্যাপ্লিকেশন থেকে এই লিঙ্কগুলি পরিচালনা করার পরিকল্পনা করেন, তাহলে Firebase কনসোল প্রকল্প সেটিংসে iOS বান্ডেল আইডি নির্দিষ্ট করতে হবে। এছাড়াও, অ্যাপ স্টোর আইডি এবং অ্যাপল ডেভেলপার টিম আইডিও নির্দিষ্ট করতে হবে।
    2. এছাড়াও আপনাকে আপনার অ্যাপ্লিকেশন ক্ষমতাগুলির মধ্যে একটি অ্যাসোসিয়েটেড ডোমেন হিসাবে FDL ইউনিভার্সাল লিঙ্ক ডোমেন কনফিগার করতে হবে।
    3. আপনি যদি iOS সংস্করণ 8 এবং তার নিচে আপনার অ্যাপ্লিকেশন বিতরণ করার পরিকল্পনা করেন, তাহলে আপনাকে ইনকামিং URL-এর জন্য একটি কাস্টম স্কিম হিসাবে আপনার iOS বান্ডেল আইডি সেট করতে হবে।
    4. এই বিষয়ে আরও জানতে, iOS ডায়নামিক লিঙ্ক নির্দেশাবলী প্রাপ্তি পড়ুন।

একটি ওয়েব অ্যাপ্লিকেশনে ইমেল ক্রিয়াকলাপ পরিচালনা করা

আপনি নির্দিষ্ট করতে পারেন যে আপনি প্রথমে একটি ওয়েব অ্যাপ্লিকেশন থেকে অ্যাকশন কোড লিঙ্কটি পরিচালনা করতে চান এবং তারপর সফলভাবে সমাপ্তির পরে অন্য ওয়েব পৃষ্ঠা বা মোবাইল অ্যাপ্লিকেশনে পুনঃনির্দেশ করতে চান, যদি মোবাইল অ্যাপ্লিকেশনটি উপলব্ধ থাকে। এটি ActionCodeSettings.Builder অবজেক্টে setHandleCodeInApp(false) কল করে করা হয়। একটি iOS বান্ডেল আইডি বা অ্যান্ড্রয়েড প্যাকেজের নাম প্রয়োজন হয় না, সেগুলি প্রদান করলে ব্যবহারকারীকে ইমেল অ্যাকশন কোড সম্পূর্ণ হলে নির্দিষ্ট অ্যাপে ফিরে যেতে পারবেন।

এখানে ব্যবহৃত ওয়েব ইউআরএলটি ইমেল অ্যাকশন টেমপ্লেট বিভাগে কনফিগার করা হয়েছে। সমস্ত প্রকল্পের জন্য একটি ডিফল্ট একটি ব্যবস্থা করা হয়েছে। ইমেল অ্যাকশন হ্যান্ডলারকে কীভাবে কাস্টমাইজ করতে হয় সে সম্পর্কে আরও জানতে ইমেল হ্যান্ডলার কাস্টমাইজ করা দেখুন।

এই ক্ষেত্রে, continueUrl ক্যোয়ারী প্যারামিটারের মধ্যে লিঙ্কটি একটি FDL লিঙ্ক হবে যার পেলোড হল ActionCodeSettings অবজেক্টে নির্দিষ্ট করা URL । আপনি যখন কোনো অতিরিক্ত নির্ভরতা ছাড়াই আপনার অ্যাপ থেকে ইনকামিং লিঙ্কটিকে আটকাতে এবং পরিচালনা করতে পারেন, আমরা আপনার জন্য গভীর লিঙ্কটি পার্স করতে FDL ক্লায়েন্ট লাইব্রেরি ব্যবহার করার পরামর্শ দিই।

ইমেল যাচাইকরণের মতো ইমেল অ্যাকশনগুলি পরিচালনা করার সময়, oobCode ক্যোয়ারী প্যারামিটার থেকে অ্যাকশন কোডটিকে ডিপ লিঙ্ক থেকে পার্স করতে হবে এবং তারপর পরিবর্তনটি কার্যকর হওয়ার জন্য applyActionCode এর মাধ্যমে প্রয়োগ করতে হবে, যেমন ইমেল যাচাই করা হবে৷

একটি মোবাইল অ্যাপ্লিকেশনে ইমেল ক্রিয়াকলাপ পরিচালনা করা

আপনি প্রথমে আপনার মোবাইল অ্যাপ্লিকেশনের মধ্যে অ্যাকশন কোড লিঙ্কটি পরিচালনা করতে চান কিনা তা নির্দিষ্ট করতে পারেন, যদি এটি ইনস্টল করা থাকে। অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলির সাথে, আপনি installIfNotAvailable বুলিয়ানের মাধ্যমে নির্দিষ্ট করার ক্ষমতাও রাখেন যে অ্যাপটি ইনস্টল করা হবে যদি ডিভাইসটি এটিকে সমর্থন করে এবং এটি ইতিমধ্যে ইনস্টল না থাকে। যদি লিঙ্কটি এমন একটি ডিভাইস থেকে ক্লিক করা হয় যা মোবাইল অ্যাপ্লিকেশন সমর্থন করে না, তবে এটি পরিবর্তে একটি ওয়েব পৃষ্ঠা থেকে খোলা হয়৷ এটি ActionCodeSettings.Builder অবজেক্টে setHandleCodeInApp(true) কল করে করা হয়। মোবাইল অ্যাপ্লিকেশনের অ্যান্ড্রয়েড প্যাকেজের নাম বা iOS বান্ডেল আইডিও নির্দিষ্ট করতে হবে।

এখানে ব্যবহৃত ফলব্যাক ওয়েব ইউআরএল, যখন কোনো মোবাইল অ্যাপ পাওয়া যায় না, সেটি হল ইমেল অ্যাকশন টেমপ্লেট বিভাগে কনফিগার করা। সমস্ত প্রকল্পের জন্য একটি ডিফল্ট একটি ব্যবস্থা করা হয়েছে। ইমেল অ্যাকশন হ্যান্ডলারকে কীভাবে কাস্টমাইজ করতে হয় সে সম্পর্কে আরও জানতে ইমেল হ্যান্ডলার কাস্টমাইজ করা দেখুন।

এই ক্ষেত্রে, ব্যবহারকারীকে পাঠানো মোবাইল অ্যাপের লিঙ্কটি হবে একটি FDL লিঙ্ক যার পেলোড হল অ্যাকশন কোড URL, কনসোলে কনফিগার করা, ক্যোয়ারী প্যারামিটার oobCode , mode , apiKey এবং continueUrl । পরবর্তীটি ActionCodeSettings অবজেক্টে নির্দিষ্ট করা আসল URL হবে। আপনি যখন কোনো অতিরিক্ত নির্ভরতা ছাড়াই আপনার অ্যাপ থেকে ইনকামিং লিঙ্কটিকে আটকাতে এবং পরিচালনা করতে পারেন, আমরা আপনার জন্য গভীর লিঙ্কটি পার্স করতে FDL ক্লায়েন্ট লাইব্রেরি ব্যবহার করার পরামর্শ দিই। কাস্টমাইজিং ইমেল হ্যান্ডলার বিভাগে বর্ণিত ওয়েব ফ্লো থেকে কীভাবে এটি পরিচালনা করা হয় তার অনুরূপ একটি মোবাইল অ্যাপ্লিকেশন থেকে অ্যাকশন কোড সরাসরি প্রয়োগ করা যেতে পারে।

ইমেল যাচাইকরণের মতো ইমেল অ্যাকশনগুলি পরিচালনা করার সময়, oobCode ক্যোয়ারী প্যারামিটার থেকে অ্যাকশন কোডটিকে ডিপ লিঙ্ক থেকে পার্স করতে হবে এবং তারপর পরিবর্তনটি কার্যকর হওয়ার জন্য applyActionCode এর মাধ্যমে প্রয়োগ করতে হবে, যেমন ইমেল যাচাই করা হবে৷