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

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

Firebase ক্লায়েন্ট SDK ব্যবহারকারীদের ইমেল পাঠানোর ক্ষমতা প্রদান করে যাতে তারা পাসওয়ার্ড রিসেট, ইমেল ঠিকানা যাচাইকরণ, এবং ইমেল-ভিত্তিক সাইন-ইন করার জন্য ব্যবহার করতে পারে এমন লিঙ্ক সহ ইমেল পাঠাতে পারে। এই টেমপ্লেট-ভিত্তিক ইমেলগুলি Google দ্বারা পাঠানো হয় এবং সীমিত কাস্টমাইজযোগ্যতা রয়েছে৷

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

এটি নিম্নলিখিত সুবিধাগুলির সাথে আসে:

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

ActionCodeSettings আরম্ভ করুন

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

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

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

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

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

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

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

নিম্নলিখিত উদাহরণটি ব্যাখ্যা করে কিভাবে একটি ইমেল যাচাইকরণ লিঙ্ক পাঠাতে হয় যা প্রথমে একটি ফায়ারবেস ডায়নামিক লিঙ্ক হিসাবে একটি মোবাইল অ্যাপে খুলবে (অ্যাপল অ্যাপ com.example.ios বা Android অ্যাপ com.example.android যেখানে অ্যাপটি ইতিমধ্যে ইনস্টল না থাকলে ইনস্টল করা হবে এবং সর্বনিম্ন সংস্করণ হল 12)। ডিপ লিঙ্কটিতে অবিরত URL পেলোড থাকবে https://www.example.com/checkout?cartId=1234 । ব্যবহৃত ডাইনামিক লিঙ্ক ডোমেন হল coolapp.page.link , যা Firebase ডায়নামিক লিঙ্কগুলির সাথে ব্যবহারের জন্য কনফিগার করা আবশ্যক৷

Node.js

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',
  },
  // FDL custom domain.
  dynamicLinkDomain: 'coolapp.page.link',
};

জাভা

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",
    DynamicLinkDomain = "coolapp.page.link",
};

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

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

Node.js

// 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 অবজেক্ট প্রদান করুন। ইমেল অ্যাকশন লিঙ্কের মাধ্যমে অপারেশনটি সমাধান হবে। ব্যবহৃত ইমেলটি অবশ্যই বিদ্যমান ব্যবহারকারীর অন্তর্গত।

Node.js

// 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 অবজেক্টের প্রয়োজন। ইমেল অ্যাকশন লিঙ্কের মাধ্যমে অপারেশনটি সমাধান হবে।

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

Node.js

// 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 সার্ভার ব্যবহার করে সংশ্লিষ্ট ব্যবহারকারীকে ইমেল করা যেতে পারে।

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