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

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

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

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

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

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

কন্টিনিউ ইউআরএল (continue URL)-এর মাধ্যমে স্টেট (state) পাস করার ক্ষমতা হলো ফায়ারবেস অথ (Firebase Auth)-এর একটি শক্তিশালী বৈশিষ্ট্য, যা ব্যবহারকারীর অভিজ্ঞতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।

ইমেল অ্যাকশনে একটি কন্টিনিউ ইউআরএল-এর অবস্থা প্রেরণ করা

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

  1. Firebase কনসোলে, Security > Authentication > Settings ট্যাবে যান।

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

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

প্যারামিটার প্রকার বর্ণনা
url স্ট্রিং

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

  • যখন ওয়েব অ্যাকশন উইজেটগুলিতে লিঙ্কটি পরিচালনা করা হয়, তখন এটি continueUrl কোয়েরি প্যারামিটারের ডিপ লিঙ্ক হয়।
  • যখন লিঙ্কটি সরাসরি অ্যাপে পরিচালনা করা হয়, তখন এটি Hosting লিঙ্কের ডিপ লিঙ্কের মধ্যে থাকা continueUrl কোয়েরি প্যারামিটার হয়।
iOS ({বান্ডেলআইডি: স্ট্রিং}|অসংজ্ঞায়িত) আইওএস বান্ডেল আইডি সেট করে, যা Firebase Authentication নির্ধারণ করতে সাহায্য করে যে এটি অ্যাপল ডিভাইসে খোলার জন্য শুধুমাত্র ওয়েব-ভিত্তিক নাকি মোবাইল লিঙ্ক তৈরি করবে।
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) অ্যান্ড্রয়েড প্যাকেজ নামটি সেট করে, যা Firebase Authentication নির্ধারণ করতে সাহায্য করে যে এটি একটি শুধুমাত্র-ওয়েব নাকি মোবাইল লিঙ্ক তৈরি করবে যা একটি অ্যান্ড্রয়েড ডিভাইসে খোলা হবে।
handleCodeInApp (বুলিয়ান|অসংজ্ঞায়িত) ইমেইল অ্যাকশন লিঙ্কটি প্রথমে মোবাইল অ্যাপে খুলবে নাকি ওয়েব লিঙ্কে খুলবে। এর ডিফল্ট মান হলো 'ফলস'। 'ট্রু' সেট করা হলে, অ্যাকশন কোড লিঙ্কটি একটি ইউনিভার্সাল লিঙ্ক বা অ্যান্ড্রয়েড অ্যাপ লিঙ্ক হিসেবে পাঠানো হবে এবং অ্যাপটি ইনস্টল করা থাকলে সেটি দ্বারা খোলা হবে। 'ফলস' এর ক্ষেত্রে, কোডটি প্রথমে ওয়েব উইজেটে পাঠানো হবে এবং তারপর 'কন্টিনিউ' করলে, অ্যাপটি ইনস্টল করা থাকলে সেখানে রিডাইরেক্ট করবে।
linkDomain (স্ট্রিং|অসংজ্ঞায়িত) যখন কোনো প্রোজেক্টের জন্য কাস্টম Hosting লিঙ্ক ডোমেইন নির্ধারণ করা হয়, তখন নির্দিষ্ট মোবাইল অ্যাপ দ্বারা লিঙ্কটি খোলার জন্য কোনটি ব্যবহার করা হবে তা নির্দিষ্ট করে দিন। অন্যথায়, ডিফল্ট ডোমেইনটি স্বয়ংক্রিয়ভাবে নির্বাচিত হয় (উদাহরণস্বরূপ, PROJECT_ID .firebaseapp.com )
dynamicLinkDomain (স্ট্রিং|অসংজ্ঞায়িত) অপ্রচলিত। এই প্যারামিটারটি উল্লেখ করবেন না।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে কাস্টম Hosting ডোমেইন custom-domain.com ব্যবহার করে একটি ইমেল যাচাইকরণ লিঙ্ক পাঠাতে হয়, যা প্রথমে একটি মোবাইল অ্যাপে খুলবে। ডিপ লিঙ্কটিতে https://www.example.com/?email=user@example.com এই কন্টিনিউ ইউআরএল পেলোডটি থাকবে।

const actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
  },
  handleCodeInApp: true,
  // Specify a custom Hosting link domain to use. The domain must be
  // configured in Firebase Hosting and owned by the project.
  linkDomain: "custom-domain.com"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

মোবাইল অ্যাপ্লিকেশনে খোলার জন্য কোনো লিঙ্ক পাঠানোর সময় Firebase Authentication Firebase Hosting ব্যবহার করে। এই ফিচারটি ব্যবহার করার জন্য, Firebase কনসোলে হোস্টিং লিঙ্কগুলো কনফিগার করতে হবে।

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

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

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

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

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

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

এক্ষেত্রে, continueUrl কোয়েরি প্যারামিটারের ভেতরের লিঙ্কটি একটি হোস্টিং লিঙ্ক হবে, যার পেলোড হলো ActionCodeSettings অবজেক্টে নির্দিষ্ট করা URL

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

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

আপনার মোবাইল অ্যাপ্লিকেশনটি ইনস্টল করা থাকলে, আপনি অ্যাকশন কোড লিঙ্কটি প্রথমে সেটির মধ্যেই হ্যান্ডেল করতে চান কিনা তা নির্দিষ্ট করতে পারেন। যদি এমন কোনো ডিভাইস থেকে লিঙ্কটিতে ক্লিক করা হয় যা মোবাইল অ্যাপ্লিকেশনটি সাপোর্ট করে না, তবে এর পরিবর্তে এটি একটি ওয়েব পেজ থেকে খোলা হয়। এটি করার জন্য firebase.auth.ActionCodeSettings অবজেক্টে handleCodeInApp true সেট করতে হয়। মোবাইল অ্যাপ্লিকেশনটির অ্যান্ড্রয়েড প্যাকেজ নেম অথবা আইওএস বান্ডেল আইডি-ও উল্লেখ করতে হবে।

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

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

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