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

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

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

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

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

  • সাধারণত, যখন কোনও ব্যবহারকারী কোনও অ্যাপল অ্যাপে পাসওয়ার্ড রিসেট বা ইমেল যাচাইকরণ প্রবাহ শুরু করেন, তখন তারা অ্যাপের মধ্যেই প্রবাহটি সম্পন্ন করার আশা করেন; continue URL এর মাধ্যমে অবস্থা পাস করার ক্ষমতা এটি সম্ভব করে তোলে।

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

ইমেল অ্যাকশনে অবস্থা/চালু URL পাস করা হচ্ছে

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

পাসওয়ার্ড রিসেট ইমেল বা যাচাইকরণ ইমেল পাঠানোর সময় একটি ActionCodeSettings ইনস্ট্যান্স প্রদান করতে হবে। এই ইন্টারফেসটি নিম্নলিখিত প্যারামিটারগুলি গ্রহণ করে:

প্যারামিটার আদর্শ বিবরণ
url স্ট্রিং

বিভিন্ন প্রসঙ্গে ভিন্ন ভিন্ন অর্থ বহনকারী লিঙ্ক (state/continue URL) সেট করে:

  • যখন ওয়েব অ্যাকশন উইজেটগুলিতে লিঙ্কটি পরিচালনা করা হয়, তখন এটি continueUrl কোয়েরি প্যারামিটারের ডিপ লিঙ্ক।
  • যখন লিঙ্কটি সরাসরি অ্যাপে পরিচালনা করা হয়, তখন এটি ডায়নামিক লিঙ্কের ডিপ লিঙ্কে continueUrl কোয়েরি প্যারামিটার।
iOSBundleId স্ট্রিং বান্ডেল আইডি সেট করে। এটি যদি কোনও অ্যাপল অ্যাপ ইনস্টল করা থাকে তবে লিঙ্কটি খোলার চেষ্টা করবে। অ্যাপটিকে কনসোলে নিবন্ধিত করতে হবে। যদি কোনও বান্ডেল আইডি প্রদান না করা হয়, তাহলে এই ক্ষেত্রের মান অ্যাপের প্রধান বান্ডেলের বান্ডেল আইডিতে সেট করা হয়।
androidPackageName স্ট্রিং অ্যান্ড্রয়েড প্যাকেজের নাম সেট করে। এটি যদি কোনও অ্যান্ড্রয়েড অ্যাপ ইনস্টল করা থাকে তবে লিঙ্কটি খোলার চেষ্টা করবে।
androidInstallApp বুল যদি ডিভাইসটি Android অ্যাপটি সমর্থন করে এবং অ্যাপটি ইতিমধ্যে ইনস্টল করা না থাকে, তাহলে এটি ইনস্টল করা হবে কিনা তা নির্দিষ্ট করে। যদি এই ক্ষেত্রটি packageName ছাড়া প্রদান করা হয়, তাহলে একটি ত্রুটি দেখাবে যা ব্যাখ্যা করবে যে packageName অবশ্যই এই ক্ষেত্রটির সাথে প্রদান করতে হবে।
androidMinimumVersion স্ট্রিং এই ফ্লোতে সমর্থিত অ্যাপের ন্যূনতম সংস্করণ। যদি minimumVersion নির্দিষ্ট করা থাকে এবং অ্যাপটির একটি পুরানো সংস্করণ ইনস্টল করা থাকে, তাহলে ব্যবহারকারীকে অ্যাপটি আপগ্রেড করার জন্য Play Store-এ নিয়ে যাওয়া হয়। Android অ্যাপটিকে কনসোলে নিবন্ধিত করতে হবে।
handleCodeInApp বুল ইমেল অ্যাকশন লিঙ্কটি প্রথমে মোবাইল অ্যাপে খোলা হবে নাকি ওয়েব লিঙ্কে। ডিফল্ট হিসেবে false আছে। true হিসেবে সেট করা হলে, অ্যাকশন কোড লিঙ্কটি একটি ইউনিভার্সাল লিঙ্ক অথবা অ্যান্ড্রয়েড অ্যাপ লিঙ্ক হিসেবে পাঠানো হবে এবং ইনস্টল করা থাকলে অ্যাপটি এটি খুলবে। false ক্ষেত্রে, কোডটি প্রথমে ওয়েব উইজেটে পাঠানো হবে এবং তারপর ইনস্টল করা থাকলে অ্যাপটিতে পুনঃনির্দেশিত করা হবে।
dynamicLinkDomain স্ট্রিং (অপ্রচলিত, `linkDomain` ব্যবহার করুন) বর্তমান লিঙ্কটি যদি Firebase Dynamic Links ব্যবহার করে খোলার জন্য ব্যবহার করা হয়, তাহলে ডায়নামিক লিঙ্ক ডোমেন (অথবা সাবডোমেন) সেট করে। যেহেতু প্রতি প্রকল্পে একাধিক ডায়নামিক লিঙ্ক ডোমেন কনফিগার করা যেতে পারে, তাই এই ক্ষেত্রটি স্পষ্টভাবে একটি বেছে নেওয়ার ক্ষমতা প্রদান করে। যদি কোনওটি প্রদান না করা হয়, তাহলে ডিফল্টরূপে প্রথম ডোমেনটি ব্যবহার করা হয়। linkDomain স্ট্রিং নির্দিষ্ট মোবাইল অ্যাপের মাধ্যমে লিঙ্কটি খোলার সময় ঐচ্ছিক কাস্টম Firebase হোস্টিং ডোমেন ব্যবহার করা হবে। ডোমেনটি Firebase হোস্টিং-এ কনফিগার করা আবশ্যক এবং প্রকল্পের মালিকানাধীন হতে হবে। এটি একটি ডিফল্ট হোস্টিং ডোমেন (`web.app` অথবা `firebaseapp.com`) হতে পারে না। এটি অবচিত `dynamicLinkDomain` সেটিং প্রতিস্থাপন করে।

নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে একটি ইমেল যাচাইকরণ লিঙ্ক পাঠানো যা প্রথমে একটি মোবাইল অ্যাপে খুলবে যা একটি Firebase Dynamic Link হিসেবে কাস্টম ডাইনামিক লিঙ্ক ডোমেইন example.page.link (iOS অ্যাপ com.example.ios অথবা অ্যান্ড্রয়েড অ্যাপ com.example.android ব্যবহার করে খোলা হবে যেখানে অ্যাপটি ইতিমধ্যে ইনস্টল না থাকলে ইনস্টল হবে এবং সর্বনিম্ন সংস্করণ 12 )। ডিপ লিঙ্কে continue URL পেলোড https://www.example.com/?email=user@example.com থাকবে।

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

Firebase Auth মোবাইল অ্যাপ্লিকেশনে খোলার জন্য তৈরি লিঙ্ক পাঠানোর সময় Firebase Dynamic Links ব্যবহার করে। এই বৈশিষ্ট্যটি ব্যবহার করার জন্য, Dynamic Links কে Firebase Console এ কনফিগার করতে হবে।

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

    1. ফায়ারবেস কনসোলে, ডায়নামিক লিংক বিভাগটি খুলুন।

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

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

      example.page.link

    4. আপনার অ্যাপল বা অ্যান্ড্রয়েড অ্যাপ কনফিগার করার সময় আগত লিঙ্কটি আটকানোর জন্য আপনার এই মানটির প্রয়োজন হবে।

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

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

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

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

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

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

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

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

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

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

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

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