ইমেল অ্যাকশন লিঙ্ক তৈরি করা হচ্ছে

মোবাইল অ্যাপগুলোকে মাঝে মাঝে ইমেল পাঠানোর মাধ্যমে ব্যবহারকারীদের সাথে যোগাযোগ করতে এবং নির্দিষ্ট কিছু পদক্ষেপ নিতে উৎসাহিত করতে হয়।

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

এর পরিবর্তে আপনি যদি আপনার নিজস্ব ইমেল টেমপ্লেট এবং ইমেল ডেলিভারি পরিষেবা ব্যবহার করতে চান, তাহলে এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে কীভাবে Firebase Admin SDK ব্যবহার করে উপরের ফ্লোগুলোর জন্য প্রোগ্রাম্যাটিকভাবে অ্যাকশন লিঙ্ক তৈরি করা যায়, যা আপনি আপনার ব্যবহারকারীদের পাঠানো ইমেলে অন্তর্ভুক্ত করতে পারবেন।

এর সাথে নিম্নলিখিত সুবিধাগুলো রয়েছে:

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

অ্যাকশনকোডসেটিংস শুরু করুন

ইমেল অ্যাকশন লিঙ্ক তৈরি করার আগে, আপনাকে একটি ActionCodeSettings ইনস্ট্যান্স ইনিশিয়ালাইজ করতে হতে পারে।

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

যে লিঙ্কগুলি মোবাইল অ্যাপের মাধ্যমে খোলার জন্য তৈরি করা হয়েছে, সেগুলিকে আপনার মোবাইল অ্যাপ থেকে শনাক্ত করতে আপনাকে কিছু কাজ সম্পাদন করতে হবে। ইমেল অ্যাকশনের জন্য মোবাইল লিঙ্কগুলি কীভাবে কনফিগার করতে হয়, তার নির্দেশাবলী দেখুন।

একটি ActionCodeSettings ইনস্ট্যান্স শুরু করতে, নিম্নলিখিত তথ্য প্রদান করুন:

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

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

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

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

নোড.জেএস

const actionCodeSettings = {
  // URL you want to redirect back to. The domain (www.example.com) for
  // this URL must be whitelisted in the Firebase Console.
  url: 'https://www.example.com/checkout?cartId=1234',
  // This must be true for email link sign-in.
  handleCodeInApp: true,
  iOS: {
    bundleId: 'com.example.ios',
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12',
  },
  // The domain must be configured in Firebase Hosting and owned by the project.
  linkDomain: 'custom-domain.com',
};

জাভা

ActionCodeSettings actionCodeSettings = ActionCodeSettings.builder()
    .setUrl("https://www.example.com/checkout?cartId=1234")
    .setHandleCodeInApp(true)
    .setIosBundleId("com.example.ios")
    .setAndroidPackageName("com.example.android")
    .setAndroidInstallApp(true)
    .setAndroidMinimumVersion("12")
    .setDynamicLinkDomain("coolapp.page.link")
    .build();

পাইথন

action_code_settings = auth.ActionCodeSettings(
    url='https://www.example.com/checkout?cartId=1234',
    handle_code_in_app=True,
    ios_bundle_id='com.example.ios',
    android_package_name='com.example.android',
    android_install_app=True,
    android_minimum_version='12',
    dynamic_link_domain='coolapp.page.link',
)

যান

actionCodeSettings := &auth.ActionCodeSettings{
	URL:                   "https://www.example.com/checkout?cartId=1234",
	HandleCodeInApp:       true,
	IOSBundleID:           "com.example.ios",
	AndroidPackageName:    "com.example.android",
	AndroidInstallApp:     true,
	AndroidMinimumVersion: "12",
	DynamicLinkDomain:     "coolapp.page.link",
}

সি#

var actionCodeSettings = new ActionCodeSettings()
{
    Url = "https://www.example.com/checkout?cartId=1234",
    HandleCodeInApp = true,
    IosBundleId = "com.example.ios",
    AndroidPackageName = "com.example.android",
    AndroidInstallApp = true,
    AndroidMinimumVersion = "12",
    LinkDomain = "coolapp.page.link",
};

আরও জানতে, ইমেল অ্যাকশনে স্টেট পাস করা দেখুন।

পাসওয়ার্ড রিসেট ইমেল লিঙ্ক তৈরি করুন

পাসওয়ার্ড রিসেট লিঙ্ক তৈরি করতে, বিদ্যমান ব্যবহারকারীর ইমেল এবং একটি ঐচ্ছিক ActionCodeSettings অবজেক্ট প্রদান করুন। অপারেশনটি ইমেল অ্যাকশন লিঙ্কের মাধ্যমে সম্পন্ন হবে। ব্যবহৃত ইমেলটি অবশ্যই একজন বিদ্যমান ব্যবহারকারীর হতে হবে।

নোড.জেএস

// Admin SDK API to generate the password reset link.
const userEmail = 'user@example.com';
getAuth()
  .generatePasswordResetLink(userEmail, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(userEmail, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

জাভা

String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generatePasswordResetLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}

পাইথন

email = 'user@example.com'
link = auth.generate_password_reset_link(email, action_code_settings)
# Construct password reset email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)

যান

email := "user@example.com"
link, err := client.PasswordResetLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct password reset template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)

সি#

var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GeneratePasswordResetLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);

লিঙ্কটি তৈরি হয়ে গেলে, সেটি কাস্টম পাসওয়ার্ড রিসেট ইমেইলে যুক্ত করে একটি কাস্টম SMTP সার্ভার ব্যবহার করে সংশ্লিষ্ট ব্যবহারকারীর কাছে ইমেইল করা যেতে পারে।

আপনি যদি ডিফল্ট পাসওয়ার্ড রিসেট ল্যান্ডিং পেজ ব্যবহার না করে নিজের কাস্টম হ্যান্ডলার তৈরি করেন, তাহলে কাস্টম ইমেল অ্যাকশন হ্যান্ডলার তৈরি করা দেখুন।

ইমেল যাচাইকরণ লিঙ্ক তৈরি করুন

একটি ইমেল যাচাইকরণ লিঙ্ক তৈরি করতে, বিদ্যমান ব্যবহারকারীর যাচাইবিহীন ইমেল এবং একটি ঐচ্ছিক ActionCodeSettings অবজেক্ট প্রদান করুন। অপারেশনটি ইমেল অ্যাকশন লিঙ্কের মাধ্যমে সম্পন্ন হবে। ব্যবহৃত ইমেলটি অবশ্যই একজন বিদ্যমান ব্যবহারকারীর হতে হবে।

নোড.জেএস

// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
getAuth()
  .generateEmailVerificationLink(useremail, actionCodeSettings)
  .then((link) => {
    // Construct email verification template, embed the link and send
    // using custom SMTP server.
    return sendCustomVerificationEmail(useremail, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

জাভা

String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generateEmailVerificationLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}

পাইথন

email = 'user@example.com'
link = auth.generate_email_verification_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)

যান

email := "user@example.com"
link, err := client.EmailVerificationLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)

সি#

var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateEmailVerificationLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);

লিঙ্কটি তৈরি হয়ে গেলে, সেটি কাস্টম ভেরিফিকেশন ইমেইলে যুক্ত করে একটি কাস্টম SMTP সার্ভার ব্যবহার করে সংশ্লিষ্ট ব্যবহারকারীর কাছে ইমেইল করা যেতে পারে।

আপনি যদি ডিফল্ট ইমেল যাচাইকরণ ল্যান্ডিং পেজ ব্যবহার না করে নিজের কাস্টম হ্যান্ডলার তৈরি করেন, তাহলে কাস্টম ইমেল অ্যাকশন হ্যান্ডলার তৈরি করা দেখুন।

সাইন-ইন করার জন্য ইমেল লিঙ্ক তৈরি করুন

ইমেল লিঙ্ক সাইন-ইন এর মাধ্যমে ব্যবহারকারীদের প্রমাণীকরণ করার আগে, আপনাকে আপনার Firebase প্রোজেক্টের জন্য ইমেল লিঙ্ক সাইন-ইন সক্রিয় করতে হবে।

একটি সাইন-ইন লিঙ্ক তৈরি করতে, ব্যবহারকারীর ইমেল এবং একটি ActionCodeSettings অবজেক্ট প্রদান করুন। সাইন-ইন সম্পন্ন করার জন্য লিঙ্কে ক্লিক করার পর ব্যবহারকারীকে কোথায় ফেরত পাঠানো হবে, সেই তথ্য প্রদানের জন্য এক্ষেত্রে ActionCodeSettings অবজেক্টটি প্রয়োজন। এই অপারেশনটি ইমেল অ্যাকশন লিঙ্কের মাধ্যমে সমাধান হবে।

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

নোড.জেএস

// Admin SDK API to generate the sign in with email link.
const useremail = 'user@example.com';
getAuth()
  .generateSignInWithEmailLink(useremail, actionCodeSettings)
  .then((link) => {
    // Construct sign-in with email link template, embed the link and
    // send using custom SMTP server.
    return sendSignInEmail(useremail, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

জাভা

String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generateSignInWithEmailLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}

পাইথন

email = 'user@example.com'
link = auth.generate_sign_in_with_email_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)

যান

email := "user@example.com"
link, err := client.EmailSignInLink(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct sign-in with email link template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)

সি#

var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateSignInWithEmailLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);

লিঙ্কটি তৈরি হয়ে গেলে, সেটি কাস্টম সাইন-ইন ইমেইলে যুক্ত করে একটি কাস্টম SMTP সার্ভার ব্যবহার করে সংশ্লিষ্ট ব্যবহারকারীর কাছে ইমেইল করা যেতে পারে।

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