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

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

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

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

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

  • সাধারণত, কোনও ব্যবহারকারী Apple অ্যাপে পাসওয়ার্ড রিসেট বা ইমেল যাচাইকরণ ফ্লো শুরু করলে, তিনি অ্যাপের মধ্যেই ফ্লো সম্পূর্ণ করতে চান; কন্টিনিউ URL-এর মাধ্যমে স্টেট পাস করার সুবিধা এটি সম্ভব করে তোলে।

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

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

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

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

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

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

Swift

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

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

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

Objective-C

প্যারামিটার প্রকার বিবরণ
URL NSString

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

  • ওয়েব অ্যাকশন উইজেটে লিঙ্ক ম্যানেজ করা হলে, এটি continueUrl কোয়েরি প্যারামিটারের মধ্যে থাকা ডিপ লিঙ্ক।
  • লিঙ্কটি সরাসরি অ্যাপে ম্যানেজ করা হলে, এটি হল continueUrl লিঙ্কের ডিপ লিঙ্কে থাকা কোয়েরি প্যারামিটার Hosting।
iOSBundleID NSString iOS বান্ডেল আইডি সেট করে, এর ফলে Firebase Authentication এটি নির্ধারণ করতে পারে যে ওয়েব-অনলি বা মোবাইল লিঙ্ক তৈরি করা উচিত কিনা, যা Android বা Apple ডিভাইসে খোলা হয়
androidPackageName NSString Firebase Authentication নির্ধারণ করতে সাহায্য করার জন্য Android প্যাকেজের নাম সেট করে যে এটি শুধুমাত্র ওয়েব বা মোবাইল লিঙ্ক তৈরি করবে কিনা যা Android বা Apple ডিভাইসে খোলা হয়
handleCodeInApp BOOL ইমেল অ্যাকশন লিঙ্ক প্রথমে মোবাইল অ্যাপে খুলবে নাকি ওয়েব লিঙ্কে খুলবে। ডিফল্ট মান হল false. 'ট্রু' হিসেবে সেট করা থাকলে, অ্যাকশন কোড লিঙ্ক একটি ইউনিভার্সাল লিঙ্ক বা Android অ্যাপ লিঙ্ক হিসেবে পাঠানো হবে এবং ইনস্টল করা থাকলে অ্যাপটি সেটি খুলবে। ভুল হলে, কোডটি প্রথমে ওয়েব উইজেটে পাঠানো হবে এবং তারপরে চালিয়ে গেলে, ইনস্টল করা থাকলে অ্যাপে রিডাইরেক্ট করা হবে।
linkDomain NSString কোনও প্রোজেক্টের জন্য কাস্টম Hosting লিঙ্ক ডোমেন নির্দিষ্ট করা থাকলে, নির্দিষ্ট করা মোবাইল অ্যাপের মাধ্যমে লিঙ্কটি খোলার সময় কোনটি ব্যবহার করতে হবে তা নির্দিষ্ট করুন। অন্যথায়, ডিফল্ট ডোমেন অটোমেটিক বেছে নেওয়া হয় (যেমন, PROJECT_ID.firebaseapp.com)।
dynamicLinkDomain NSString বন্ধ করে দেওয়া হয়েছে। এই প্যারামিটার নির্দিষ্ট করবেন না।

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

Swift

var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android")
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
actionCodeSettings.linkDomain = "custom-domain.com"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
 actionCodeSettings.linkDomain = @"custom-domain.com";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

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

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

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

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

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

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

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

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

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

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

আপনার মোবাইল অ্যাপ্লিকেশন ইনস্টল করা থাকলে, আপনি প্রথমে সেটির মধ্যে অ্যাকশন কোড লিঙ্কটি পরিচালনা করতে চান কিনা তা নির্দিষ্ট করতে পারবেন। মোবাইল অ্যাপ্লিকেশন কাজ করে না এমন কোনও ডিভাইস থেকে লিঙ্কে ক্লিক করা হলে, এটি পরিবর্তে একটি ওয়েব পৃষ্ঠা থেকে খোলা হয়। এটি FIRActionCodeSettings (Obj-C) বা ActionCodeSettings (Swift) অবজেক্টে handleCodeInApp-এর মান true সেট করার মাধ্যমে করা হয়। এছাড়াও, মোবাইল অ্যাপ্লিকেশনটির Android প্যাকেজ নাম বা বান্ডেল আইডি নির্দিষ্ট করতে হবে। এখানে ব্যবহৃত ফলব্যাক ওয়েব URL, কোনও মোবাইল অ্যাপ উপলভ্য না থাকলে, ইমেল অ্যাকশন টেমপ্লেট বিভাগে কনফিগার করা URL হয়। সব প্রোজেক্টের জন্য একটি ডিফল্ট প্রভিশন করা হয়। ইমেল অ্যাকশন হ্যান্ডলার কীভাবে কাস্টমাইজ করতে হয় তা জানতে ইমেল হ্যান্ডলার কাস্টমাইজ করা লিঙ্কে যান।

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

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