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

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

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

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

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

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

Firebase Auth-এর দেওয়া কন্টিনিউ URL-এর মাধ্যমে স্টেট পাস করার ক্ষমতা একটি শক্তিশালী ফিচার যা ব্যবহারকারীর অভিজ্ঞতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।

ইমেল অ্যাকশনে কন্টিনিউ URL-এর পাসিং স্টেট

নিরাপদে কন্টিনিউ URL পাস করার জন্য, আপনাকে URL-এর ডোমেনকে অনুমোদিত ডোমেন হিসেবে যোগ করতে হবে:

  1. Firebase কনসোলে, নিরাপত্তা > অনুমোদন > সেটিংস ট্যাব বিকল্পে যান।

  2. অনুমোদিত ডোমেন বিভাগে, ডোমেন যোগ করুন বিকল্পে ক্লিক করুন এবং URL যোগ করুন।

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

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

লিঙ্ক (স্টেট/কন্টিনিউ URL) সেট করে, যার বিভিন্ন প্রসঙ্গে আলাদা আলাদা অর্থ হয়:

  • ওয়েব অ্যাকশন উইজেটে লিঙ্ক ম্যানেজ করা হলে, এটি continueUrl কোয়েরি প্যারামিটারের মধ্যে থাকা ডিপ লিঙ্ক।
  • লিঙ্কটি সরাসরি অ্যাপে ম্যানেজ করা হলে, এটি হল continueUrl লিঙ্কের ডিপ লিঙ্কে থাকা কোয়েরি প্যারামিটার Hosting।
setIOSBundleId(String iOSBundleId) iOS বান্ডেল আইডি সেট করে, এর ফলে Firebase Authentication এটি নির্ধারণ করতে সাহায্য করে যে Apple ডিভাইসে খোলার জন্য এটি শুধুমাত্র ওয়েব বা মোবাইল লিঙ্ক তৈরি করবে কিনা
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Firebase Authentication নির্ধারণ করতে সাহায্য করার জন্য Android প্যাকেজের নাম সেট করে যে এটি শুধুমাত্র ওয়েব-ভিত্তিক বা মোবাইল লিঙ্ক তৈরি করবে কিনা যা Android ডিভাইসে খোলা হয়
setHandleCodeInApp(boolean status) ইমেল অ্যাকশন লিঙ্ক প্রথমে মোবাইল অ্যাপে খুলবে নাকি ওয়েব লিঙ্কে খুলবে। ডিফল্ট মান হল false. 'ট্রু' হিসেবে সেট করা থাকলে, অ্যাকশন কোড লিঙ্ক একটি ইউনিভার্সাল লিঙ্ক বা Android অ্যাপ লিঙ্ক হিসেবে পাঠানো হবে এবং ইনস্টল করা থাকলে অ্যাপটি সেটি খুলবে। ভুল হলে, কোডটি প্রথমে ওয়েব উইজেটে পাঠানো হবে এবং তারপরে চালিয়ে গেলে, ইনস্টল করা থাকলে অ্যাপে রিডাইরেক্ট করা হবে।
setLinkDomain(String customDomain) কোনও প্রোজেক্টের জন্য কাস্টম Hosting লিঙ্ক ডোমেন নির্দিষ্ট করা থাকলে, নির্দিষ্ট করা মোবাইল অ্যাপের মাধ্যমে লিঙ্কটি খোলার সময় কোনটি ব্যবহার করতে হবে তা নির্দিষ্ট করুন। অন্যথায়, ডিফল্ট ডোমেন অটোমেটিক বেছে নেওয়া হয় (যেমন, PROJECT_ID.firebaseapp.com)।
setDynamicLinkDomain(String dynamicLinkDomain) বন্ধ করে দেওয়া হয়েছে। এই প্যারামিটার নির্দিষ্ট করবেন না।

নিম্নলিখিত উদাহরণ থেকে কীভাবে ইমেল যাচাইকরণ লিঙ্ক পাঠাতে হয় তা বোঝা যায় যা প্রথমে মোবাইল অ্যাপে খুলবে। ডিপ লিঙ্কে চালিয়ে যাওয়ার URL পে-লোড http://www.example.com/verify?uid=1234 থাকবে।

Kotlin

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 Authentication মোবাইল অ্যাপ্লিকেশনে খোলার জন্য তৈরি করা লিঙ্ক পাঠানোর সময় Firebase Hosting ব্যবহার করে। এই ফিচার ব্যবহার করতে, Firebase কনসোলে হোস্টিং লিঙ্ক কনফিগার করতে হবে।

  1. Android অ্যাপ্লিকেশন কনফিগার করা:

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

    1. আপনি যদি নিজের iOS অ্যাপ্লিকেশন থেকে এইসব লিঙ্ক ম্যানেজ করার পরিকল্পনা করেন, তাহলে আপনাকে নিজের অ্যাপ্লিকেশন কার্যকারিতায় Hosting লিঙ্ক ডোমেনকে অ্যাসোসিয়েটেড ডোমেন হিসেবে কনফিগার করতে হবে।
    2. এই বিষয়ে আরও জানতে, iOS হোস্টিং লিঙ্ক সংক্রান্ত নির্দেশাবলী দেখুন।

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

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

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

এই ক্ষেত্রে, continueUrl কোয়েরি প্যারামিটারের মধ্যে থাকা লিঙ্কটি হবে এমন একটি Hosting লিঙ্ক যার পেলোড হল URL যা ActionCodeSettings অবজেক্টে নির্দিষ্ট করা আছে।

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

মোবাইল অ্যাপ্লিকেশনে ইমেল অ্যাকশন ম্যানেজ করা

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

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

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

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