পাসওয়ার্ড রিসেট বা ব্যবহারকারীর ইমেল যাচাই করার জন্য ইমেল অ্যাকশন পাঠানোর সময় আপনি একটি 'continue URL'-এর মাধ্যমে স্টেট পাস করতে পারেন। এর ফলে, অ্যাকশনটি সম্পন্ন হওয়ার পর ব্যবহারকারী অ্যাপে ফিরে আসতে পারেন। এছাড়াও, আপনি নির্দিষ্ট করে দিতে পারেন যে, মোবাইল অ্যাপ্লিকেশন ইনস্টল হয়ে গেলে ইমেল অ্যাকশন লিঙ্কটি কোনো ওয়েব পেজের পরিবর্তে সরাসরি সেখান থেকে হ্যান্ডেল করা হবে কি না।
নিম্নলিখিত সাধারণ পরিস্থিতিগুলিতে এটি অত্যন্ত কার্যকর হতে পারে:
বর্তমানে লগ ইন করা নেই এমন কোনো ব্যবহারকারী এমন কোনো কন্টেন্ট অ্যাক্সেস করার চেষ্টা করতে পারেন, যার জন্য সাইন ইন করা প্রয়োজন। তবে, ব্যবহারকারী হয়তো তার পাসওয়ার্ড ভুলে গেছেন এবং সেই কারণে পাসওয়ার্ড রিসেট করার প্রক্রিয়াটি চালু করছেন। এই প্রক্রিয়াটি শেষে, ব্যবহারকারী অ্যাপের সেই অংশে ফিরে যেতে চান, যেখানে তিনি অ্যাক্সেস করার চেষ্টা করছিলেন।
একটি অ্যাপ্লিকেশন শুধুমাত্র যাচাইকৃত অ্যাকাউন্টগুলোকেই অ্যাক্সেস দিতে পারে। উদাহরণস্বরূপ, একটি নিউজলেটার অ্যাপ সাবস্ক্রাইব করার আগে ব্যবহারকারীকে তার ইমেল যাচাই করতে বলতে পারে। ব্যবহারকারী ইমেল যাচাইকরণ প্রক্রিয়াটি সম্পন্ন করবেন এবং সাবস্ক্রিপশনটি সম্পূর্ণ করার জন্য তাকে অ্যাপে ফিরিয়ে আনা হবে বলে আশা করবেন।
সাধারণত, যখন কোনো ব্যবহারকারী একটি অ্যাপল অ্যাপে পাসওয়ার্ড রিসেট বা ইমেল যাচাইকরণ প্রক্রিয়া শুরু করেন, তখন তিনি আশা করেন যে প্রক্রিয়াটি অ্যাপের মধ্যেই সম্পন্ন হবে; কন্টিনিউ ইউআরএল (continue URL)-এর মাধ্যমে স্টেট (state) পাস করার ক্ষমতা এটিকে সম্ভব করে তোলে।
কন্টিনিউ ইউআরএল (continue URL)-এর মাধ্যমে স্টেট (state) পাস করার ক্ষমতা হলো ফায়ারবেস অথ (Firebase Auth)-এর একটি শক্তিশালী বৈশিষ্ট্য, যা ব্যবহারকারীর অভিজ্ঞতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।
ইমেল অ্যাকশনে স্টেট/কন্টিনিউ ইউআরএল পাস করা
একটি কন্টিনিউ ইউআরএল নিরাপদে পাঠানোর জন্য, ইউআরএল-এর ডোমেইনটিকে ফায়ারবেস কনসোলে অনুমোদিত তালিকায় (allowlisted) অন্তর্ভুক্ত করতে হবে। এটি করার জন্য, অথেনটিকেশন (Authentication) বিভাগের সাইন-ইন মেথড (Sign-in method) ট্যাবের অধীনে অনুমোদিত ডোমেইনের (Authorized domains) তালিকায় এই ডোমেইনটিকে যুক্ত করতে হবে, যদি এটি আগে থেকে সেখানে না থাকে।
পাসওয়ার্ড রিসেট ইমেল বা ভেরিফিকেশন ইমেল পাঠানোর সময় একটি ActionCodeSettings ইনস্ট্যান্স প্রদান করতে হবে। এই ইন্টারফেসটি নিম্নলিখিত প্যারামিটারগুলো গ্রহণ করে:
| প্যারামিটার | প্রকার | বর্ণনা | |||
|---|---|---|---|---|---|
url | স্ট্রিং | লিঙ্কটি (স্টেট/কন্টিনিউ ইউআরএল) সেট করে, যার বিভিন্ন প্রেক্ষাপটে ভিন্ন ভিন্ন অর্থ রয়েছে:
| |||
iOSBundleId | স্ট্রিং | বান্ডেল আইডি সেট করে। যদি কোনো অ্যাপল অ্যাপ ইনস্টল করা থাকে, তবে এটি সেই অ্যাপে লিঙ্কটি খোলার চেষ্টা করবে। অ্যাপটিকে কনসোলে রেজিস্টার করা থাকতে হবে। যদি কোনো বান্ডেল আইডি প্রদান করা না হয়, তবে এই ফিল্ডের মান অ্যাপটির মূল বান্ডেলের বান্ডেল আইডিতে সেট করা হয়। | |||
androidPackageName | স্ট্রিং | অ্যান্ড্রয়েড প্যাকেজ নেম সেট করে। এর ফলে, কোনো অ্যান্ড্রয়েড অ্যাপ ইনস্টল করা থাকলে লিঙ্কটি সেখানে খোলার চেষ্টা করা হবে। | |||
androidInstallApp | বুল | ডিভাইসটি সমর্থন করলে এবং অ্যাপটি আগে থেকে ইনস্টল করা না থাকলে, অ্যান্ড্রয়েড অ্যাপটি ইনস্টল করা হবে কিনা তা নির্দিষ্ট করে। এই ফিল্ডে `packageName` ছাড়া তথ্য দিলে একটি এরর দেখানো হয়, যেখানে ব্যাখ্যা করা থাকে যে এই ফিল্ডের সাথে `packageName` অবশ্যই প্রদান করতে হবে। | |||
androidMinimumVersion | স্ট্রিং | এই ফ্লো-তে অ্যাপটির সর্বনিম্ন যে সংস্করণটি সমর্থিত। যদি minimumVersion নির্দিষ্ট করা থাকে এবং অ্যাপটির কোনো পুরোনো সংস্করণ ইনস্টল করা থাকে, তবে অ্যাপটি আপগ্রেড করার জন্য ব্যবহারকারীকে প্লে স্টোরে নিয়ে যাওয়া হয়। অ্যান্ড্রয়েড অ্যাপটিকে কনসোলে রেজিস্টার করতে হবে। | |||
handleCodeInApp | বুল | ইমেইল অ্যাকশন লিঙ্কটি প্রথমে মোবাইল অ্যাপে খুলবে নাকি ওয়েব লিঙ্কে খুলবে। এর ডিফল্ট মান হলো 'ফলস'। 'ট্রু' সেট করা হলে, অ্যাকশন কোড লিঙ্কটি একটি ইউনিভার্সাল লিঙ্ক বা অ্যান্ড্রয়েড অ্যাপ লিঙ্ক হিসেবে পাঠানো হবে এবং অ্যাপটি ইনস্টল করা থাকলে সেটি দ্বারা খোলা হবে। 'ফলস' এর ক্ষেত্রে, কোডটি প্রথমে ওয়েব উইজেটে পাঠানো হবে এবং তারপর 'কন্টিনিউ' করলে, অ্যাপটি ইনস্টল করা থাকলে সেখানে রিডাইরেক্ট করবে। | |||
dynamicLinkDomain | স্ট্রিং | (অপ্রচলিত, `linkDomain` ব্যবহার করুন) ফায়ারবেস ডাইনামিক লিঙ্ক ব্যবহার করে বর্তমান লিঙ্কটি খোলার জন্য ব্যবহৃত ডাইনামিক লিঙ্ক ডোমেইন (বা সাবডোমেইন) নির্ধারণ করে। যেহেতু প্রতি প্রজেক্টে একাধিক ডাইনামিক লিঙ্ক ডোমেইন কনফিগার করা যায়, তাই এই ফিল্ডটি স্পষ্টভাবে একটি বেছে নেওয়ার সুযোগ দেয়। কোনোটি প্রদান করা না হলে, ডিফল্টরূপে প্রথম ডোমেইনটি ব্যবহৃত হয়। | linkDomain | স্ট্রিং | নির্দিষ্ট মোবাইল অ্যাপের মাধ্যমে লিঙ্কটি খোলার জন্য ব্যবহৃত ঐচ্ছিক কাস্টম ফায়ারবেস হোস্টিং ডোমেইন। ডোমেইনটি অবশ্যই ফায়ারবেস হোস্টিং-এ কনফিগার করা এবং প্রজেক্টের মালিকানাধীন হতে হবে। এটি কোনো ডিফল্ট হোস্টিং ডোমেইন (`web.app` বা `firebaseapp.com`) হতে পারবে না। এটি বাতিল হয়ে যাওয়া `dynamicLinkDomain` সেটিং-এর পরিবর্তে ব্যবহৃত হবে। |
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি ইমেল যাচাইকরণ লিঙ্ক পাঠাতে হয় যা প্রথমে একটি মোবাইল অ্যাপে Firebase Dynamic Link হিসাবে খুলবে। এর জন্য কাস্টম ডাইনামিক লিঙ্ক ডোমেইন example.page.link ব্যবহার করা হবে (iOS অ্যাপের জন্য com.example.ios অথবা Android অ্যাপের জন্য 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 ব্যবহার করে। এই ফিচারটি ব্যবহার করার জন্য, Firebase Console-এ Dynamic Links কনফিগার করতে হবে।
ফায়ারবেস ডাইনামিক লিঙ্ক সক্রিয় করুন:
Firebase কনসোলে, Dynamic Links সেকশনটি খুলুন।
আপনি যদি এখনও ডাইনামিক লিঙ্কস-এর শর্তাবলী গ্রহণ না করে থাকেন এবং একটি ডাইনামিক লিঙ্কস ডোমেইন তৈরি না করে থাকেন, তবে এখনই তা করুন।
আপনি যদি ইতিমধ্যেই একটি ডাইনামিক লিঙ্কস ডোমেইন তৈরি করে থাকেন, তবে তা লিখে রাখুন। একটি ডাইনামিক লিঙ্কস ডোমেইন সাধারণত নিচের উদাহরণটির মতো দেখতে হয়:
example.page.link
ইনকামিং লিঙ্কটি গ্রহণ করার জন্য আপনার অ্যাপল বা অ্যান্ড্রয়েড অ্যাপ কনফিগার করার সময় এই মানটির প্রয়োজন হবে।
অ্যান্ড্রয়েড অ্যাপ্লিকেশন কনফিগার করা:
- আপনি যদি আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশন থেকে এই লিঙ্কগুলি পরিচালনা করার পরিকল্পনা করেন, তাহলে ফায়ারবেস কনসোল প্রজেক্ট সেটিংসে অ্যান্ড্রয়েড প্যাকেজ নামটি উল্লেখ করতে হবে। এছাড়াও, অ্যাপ্লিকেশন সার্টিফিকেটের SHA-1 এবং SHA-256 প্রদান করতে হবে।
- আপনাকে আপনার AndroidManifest.xml ফাইলে ডিপ লিঙ্কের জন্য ইন্টেন্ট ফিল্টারটিও কনফিগার করতে হবে।
- এই বিষয়ে আরও জানতে, “অ্যান্ড্রয়েড ডাইনামিক লিঙ্ক গ্রহণ” নির্দেশাবলী দেখুন।
অ্যাপল অ্যাপ্লিকেশন কনফিগার করা:
- আপনি যদি আপনার অ্যাপ্লিকেশন থেকে এই লিঙ্কগুলি পরিচালনা করার পরিকল্পনা করেন, তাহলে ফায়ারবেস কনসোল প্রজেক্ট সেটিংসে বান্ডেল আইডি উল্লেখ করতে হবে। এছাড়াও, অ্যাপ স্টোর আইডি এবং অ্যাপল ডেভেলপার টিম আইডি-ও উল্লেখ করতে হবে।
- আপনাকে আপনার অ্যাপ্লিকেশন ক্যাপাবিলিটিজে এফডিএল ইউনিভার্সাল লিঙ্ক ডোমেইনটিকে একটি অ্যাসোসিয়েটেড ডোমেইন হিসেবেও কনফিগার করতে হবে।
- আপনি যদি আপনার অ্যাপ্লিকেশনটি iOS সংস্করণ ৮ এবং তার নিচের সংস্করণগুলোতে বিতরণ করার পরিকল্পনা করেন, তাহলে আপনাকে আগত URL-গুলোর জন্য আপনার বান্ডেল আইডি একটি কাস্টম স্কিম হিসেবে সেট করতে হবে।
- এই বিষয়ে আরও জানতে, “Receiving Apple platforms Dynamic Links” নির্দেশাবলী দেখুন।
একটি ওয়েব অ্যাপ্লিকেশনে ইমেল সংক্রান্ত কার্যকলাপ পরিচালনা করা
আপনি প্রথমে একটি ওয়েব অ্যাপ্লিকেশন থেকে অ্যাকশন কোড লিঙ্কটি পরিচালনা করতে চান এবং সফলভাবে সম্পন্ন হওয়ার পর অন্য কোনো ওয়েব পেজ বা মোবাইল অ্যাপ্লিকেশনে রিডাইরেক্ট করতে চান কিনা, তা নির্দিষ্ট করতে পারেন (যদি মোবাইল অ্যাপ্লিকেশনটি উপলব্ধ থাকে)। এটি করার জন্য ActionCodeSettings অবজেক্টে handleCodeInApp false সেট করতে হয়। যদিও বান্ডেল আইডি বা অ্যান্ড্রয়েড প্যাকেজ নেম আবশ্যক নয়, তবে এগুলো প্রদান করলে ইমেইল অ্যাকশন কোড সম্পন্ন হওয়ার পর ব্যবহারকারীকে নির্দিষ্ট অ্যাপে রিডাইরেক্ট করা যাবে।
এখানে ব্যবহৃত ওয়েব ইউআরএলটি ইমেল অ্যাকশন টেমপ্লেট বিভাগে কনফিগার করা হয়েছে। সমস্ত প্রোজেক্টের জন্য একটি ডিফল্ট ইউআরএল সরবরাহ করা থাকে। ইমেল অ্যাকশন হ্যান্ডলার কীভাবে কাস্টমাইজ করতে হয় সে সম্পর্কে আরও জানতে, 'কাস্টমাইজিং ইমেল হ্যান্ডলারস ' অংশটি দেখুন।
এই ক্ষেত্রে, continueURL কোয়েরি প্যারামিটারের ভেতরের লিঙ্কটি একটি FDL লিঙ্ক হবে, যার পেলোড হলো ActionCodeSettings অবজেক্টে নির্দিষ্ট করা URL । যদিও আপনি কোনো অতিরিক্ত নির্ভরতা ছাড়াই আপনার অ্যাপ থেকে আগত লিঙ্কটি ইন্টারসেপ্ট ও হ্যান্ডেল করতে পারেন, আমরা আপনার জন্য ডিপ লিঙ্কটি পার্স করতে FDL ক্লায়েন্ট লাইব্রেরি ব্যবহার করার পরামর্শ দিই।
ইমেল যাচাইকরণের মতো ইমেল অ্যাকশনগুলি পরিচালনা করার সময়, পরিবর্তনটি কার্যকর করার জন্য (অর্থাৎ ইমেলটি যাচাই করার জন্য), oobCode কোয়েরি প্যারামিটার থেকে অ্যাকশন কোডটি ডিপ লিঙ্ক থেকে পার্স করতে হবে এবং তারপর applyActionCode এর মাধ্যমে প্রয়োগ করতে হবে।
মোবাইল অ্যাপ্লিকেশনে ইমেল সংক্রান্ত কার্যকলাপ পরিচালনা করা
আপনার মোবাইল অ্যাপ্লিকেশনটি ইনস্টল করা থাকলে, আপনি অ্যাকশন কোড লিঙ্কটি প্রথমে সেটির মধ্যেই হ্যান্ডেল করতে চান কিনা তা নির্দিষ্ট করে দিতে পারেন। অ্যান্ড্রয়েড অ্যাপ্লিকেশনের ক্ষেত্রে, আপনার androidInstallApp এর মাধ্যমে এটিও নির্দিষ্ট করার সুযোগ রয়েছে যে, যদি ডিভাইসটি অ্যাপটিকে সাপোর্ট করে এবং এটি আগে থেকে ইনস্টল করা না থাকে, তবে অ্যাপটি ইনস্টল করা হবে। যদি এমন কোনো ডিভাইস থেকে লিঙ্কটিতে ক্লিক করা হয় যা মোবাইল অ্যাপ্লিকেশনটি সাপোর্ট করে না, তবে এর পরিবর্তে এটি একটি ওয়েব পেজ থেকে খোলা হয়। এটি করার জন্য ActionCodeSettings অবজেক্টে handleCodeInApp true সেট করতে হয়। মোবাইল অ্যাপ্লিকেশনটির অ্যান্ড্রয়েড প্যাকেজ নেম বা বান্ডেল আইডি-ও নির্দিষ্ট করতে হবে। যখন কোনো মোবাইল অ্যাপ উপলব্ধ থাকে না, তখন এখানে ব্যবহৃত ফলব্যাক ওয়েব ইউআরএলটি হলো ইমেল অ্যাকশন টেমপ্লেট সেকশনে কনফিগার করা ইউআরএলটি। সমস্ত প্রোজেক্টের জন্য একটি ডিফল্ট ইউআরএল সরবরাহ করা থাকে। ইমেল অ্যাকশন হ্যান্ডলার কীভাবে কাস্টমাইজ করতে হয় সে সম্পর্কে আরও জানতে, ইমেল হ্যান্ডলার কাস্টমাইজ করা অংশটি দেখুন।
এই ক্ষেত্রে, ব্যবহারকারীর কাছে পাঠানো মোবাইল অ্যাপ লিঙ্কটি একটি FDL লিঙ্ক হবে যার পেলোড হলো কনসোলে কনফিগার করা অ্যাকশন কোড URL, সাথে থাকবে oobCode , mode , apiKey এবং continueUrl এই কোয়েরি প্যারামিটারগুলো। শেষেরটি হবে ActionCodeSettings অবজেক্টে নির্দিষ্ট করা মূল URL । যদিও আপনি কোনো অতিরিক্ত নির্ভরতা ছাড়াই আপনার অ্যাপ থেকে আগত লিঙ্কটি ইন্টারসেপ্ট এবং হ্যান্ডেল করতে পারেন, আমরা আপনার জন্য ডিপ লিঙ্কটি পার্স করতে FDL ক্লায়েন্ট লাইব্রেরি ব্যবহার করার পরামর্শ দিই। ইমেল হ্যান্ডলার কাস্টমাইজ করার বিভাগে বর্ণিত ওয়েব ফ্লো থেকে যেভাবে অ্যাকশন কোডটি হ্যান্ডেল করা হয়, ঠিক একইভাবে একটি মোবাইল অ্যাপ্লিকেশন থেকেও এটি সরাসরি প্রয়োগ করা যেতে পারে।
ইমেল যাচাইকরণের মতো ইমেল অ্যাকশনগুলি পরিচালনা করার সময়, পরিবর্তনটি কার্যকর করার জন্য (অর্থাৎ ইমেলটি যাচাই করার জন্য), oobCode কোয়েরি প্যারামিটার থেকে অ্যাকশন কোডটি ডিপ লিঙ্ক থেকে পার্স করতে হবে এবং তারপর applyActionCode এর মাধ্যমে প্রয়োগ করতে হবে।