Google มุ่งมั่นที่จะพัฒนาความเท่าเทียมทางเชื้อชาติสำหรับชุมชนคนผิวดำ มาดูกันว่า
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

การสร้างลิงก์การดำเนินการกับอีเมล

บางครั้งแอพมือถือจำเป็นต้องโต้ตอบกับผู้ใช้และแจ้งให้ดำเนินการบางอย่างด้วยการส่งอีเมล

Firebase Admin SDKs ให้ความสามารถในการส่งอีเมลผู้ใช้ที่มีลิงก์ที่สามารถใช้สำหรับการรีเซ็ตรหัสผ่านการตรวจสอบที่อยู่อีเมลและการลงชื่อเข้าใช้ทางอีเมล Google ส่งอีเมลเหล่านี้และ จำกัด การปรับแต่งได้

หากคุณต้องการใช้เทมเพลตอีเมลของคุณเองและบริการจัดส่งอีเมลของคุณเองคุณสามารถใช้ Firebase Admin SDK เพื่อสร้างลิงก์การกระทำโดยทางโปรแกรมสำหรับโฟลว์ด้านบนซึ่งคุณสามารถรวมไว้ในอีเมลถึงผู้ใช้ของคุณ

สิ่งนี้มาพร้อมกับสิทธิประโยชน์ดังต่อไปนี้:

  • ปรับแต่งเทมเพลตอีเมล ซึ่งรวมถึงความสามารถในการเพิ่มรูปแบบใหม่และการสร้างตราสินค้าที่กำหนดเองเปลี่ยนถ้อยคำและโลโก้ที่อยู่ผู้ใช้ด้วยชื่อแทนชื่อเต็มและอื่น ๆ
  • ใช้เทมเพลตที่แตกต่างกันขึ้นอยู่กับบริบท ตัวอย่างเช่นหากผู้ใช้กำลังตรวจสอบอีเมลเพื่อสมัครรับจดหมายข่าวบริบทอาจต้องระบุไว้ในเนื้อหาอีเมล อีกตัวอย่างหนึ่งคือลงชื่อเข้าใช้ลิงก์อีเมล: ในสถานการณ์สมมติหนึ่งกรณีนี้อาจถูกเรียกใช้โดยผู้ใช้รายเดียวกันหรือเป็นการเชิญจากผู้ใช้รายอื่น บริบทจะต้องรวมอยู่ในอีเมล
  • แปลเทมเพลตอีเมลที่กำหนดเอง
  • ความสามารถในการสร้างลิงค์จากสภาพแวดล้อมเซิร์ฟเวอร์ที่ปลอดภัย
  • ความสามารถในการกำหนดวิธีการเปิดลิงก์ผ่านแอพมือถือหรือเบราว์เซอร์และวิธีการส่งผ่านข้อมูลสถานะเพิ่มเติม ฯลฯ
  • ความสามารถในการกำหนดโดเมนลิงก์แบบไดนามิกที่ใช้สำหรับโฟลว์แอปมือถือเมื่อสร้างลิงก์การดำเนินการทางอีเมลและระบุโดเมนลิงก์แบบไดนามิกที่แตกต่างกันขึ้นอยู่กับบริบทหรือแอพมือถือ

เริ่มต้น ActionCodeSettings

ก่อนที่คุณจะสามารถสร้างลิงก์การดำเนินการทางอีเมลคุณอาจต้องเริ่มต้นอินสแตนซ์ ActionCodeSettings

ActionCodeSettings อนุญาตให้คุณผ่านสถานะเพิ่มเติมผ่าน URL ดำเนินการต่อซึ่งสามารถเข้าถึงได้หลังจากผู้ใช้คลิกลิงก์อีเมล นอกจากนี้ยังช่วยให้ผู้ใช้สามารถกลับไปที่แอพได้หลังจากการดำเนินการเสร็จสิ้น นอกจากนี้คุณสามารถระบุว่าจะจัดการลิงก์การดำเนินการอีเมลโดยตรงจากแอปพลิเคชันมือถือเมื่อติดตั้งหรือจากเบราว์เซอร์

สำหรับลิงก์ที่ต้องการเปิดผ่านแอพมือถือคุณจะต้องเปิดใช้งาน Firebase Dynamic Links และทำงานบางอย่างเพื่อตรวจสอบลิงก์เหล่านี้จากแอพมือถือของคุณ อ้างอิงถึงคำแนะนำเกี่ยวกับวิธี กำหนดค่า Firebase Dynamic Links สำหรับการดำเนินการทางอีเมล

ในการเริ่มต้นอินสแตนซ์ ActionCodeSettings ให้ระบุข้อมูลต่อไปนี้:

พารามิเตอร์ ชนิด ลักษณะ
url เชือก

ตั้งค่าลิงค์ (รัฐ / URL ต่อ) ซึ่งมีความหมายแตกต่างกันในบริบทที่แตกต่างกัน:

  • เมื่อจัดการลิงก์ในวิดเจ็ตการดำเนินการบนเว็บนี่คือลิงก์เชิงลึกในพารามิเตอร์เคียวรี continueUrl
  • เมื่อจัดการลิงก์ในแอปโดยตรงนี่คือพารามิเตอร์เคียวรี continueUrl ในลิงก์เชิงลึกของ Dynamic Link
iOS ({bundleId: string} | undefined) ตั้งค่า ID กลุ่ม iOS วิธีนี้จะพยายามเปิดลิงก์ในแอป iOS หากติดตั้งไว้ แอป iOS ต้องลงทะเบียนในคอนโซล
android ({packageName: string, installApp: boolean | undefined, MinimumVersion: string | undefined} | undefined) ตั้งชื่อแพ็กเกจ Android นี่จะพยายามเปิดลิงก์ในแอพ android ถ้าติดตั้งไว้ หาก installApp ผ่านไปจะระบุว่าจะติดตั้งแอพ Android หรือไม่หากอุปกรณ์รองรับและไม่ได้ติดตั้งแอพไว้ หากฟิลด์นี้มีให้โดยไม่มี packageName ข้อผิดพลาดจะถูกส่งไปอธิบายว่าต้องระบุ packageName ร่วมกับฟิลด์นี้ หากระบุ minimumVersion และมีการติดตั้งแอปรุ่นเก่าผู้ใช้จะถูกนำไปยัง Play Store เพื่ออัปเกรดแอป แอพ Android จะต้องลงทะเบียนใน Console
handleCodeInApp (บูล | undefined) ไม่ว่าจะเปิดลิงก์การดำเนินการทางอีเมลในแอพมือถือหรือเว็บลิงค์ก่อน ค่าเริ่มต้นเป็นเท็จ เมื่อตั้งค่าเป็นจริงลิงก์รหัสการกระทำจะถูกส่งเป็น Universal Link หรือ Android App Link และจะเปิดโดยแอปหากติดตั้ง ในกรณีที่ผิดรหัสจะถูกส่งไปยังเว็บวิดเจ็ตก่อนจากนั้นดำเนินการต่อจะเปลี่ยนเส้นทางไปยังแอปหากติดตั้ง
dynamicLinkDomain (สตริง | undefined) ตั้งค่าโดเมนการเชื่อมโยงแบบไดนามิก (หรือโดเมนย่อย) เพื่อใช้สำหรับการเชื่อมโยงปัจจุบันหากจะต้องเปิดโดยใช้การเชื่อมโยงแบบไดนามิก Firebase เนื่องจากโดเมนลิงก์แบบไดนามิกหลายรายการสามารถกำหนดค่าต่อโครงการได้ฟิลด์นี้ให้ความสามารถในการเลือกหนึ่งโดเมน หากไม่มีการระบุจะใช้โดเมนที่เก่าที่สุดโดยค่าเริ่มต้น

ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์การตรวจสอบอีเมลที่จะเปิดในแอพมือถือก่อนเป็น Firebase Dynamic Link (แอพ iOS com.example.ios หรือแอพ Android com.example.android ที่แอพจะติดตั้งถ้ายังไม่ได้ติดตั้งและ รุ่นต่ำสุดคือ 12) ลิงก์ที่ลึกจะมีเพย์โหลด URL ต่อไป https://www.example.com/checkout?cartId=1234 โดเมนลิงก์แบบไดนามิกที่ใช้คือ coolapp.page.link ซึ่งจะต้องกำหนดค่าเพื่อใช้กับ Firebase Dynamic Links

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';
admin.auth().generatePasswordResetLink(userEmail, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(email, 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 ที่กำหนดเอง

หากคุณไม่ได้ใช้หน้า Landing Page รีเซ็ตรหัสผ่านเริ่มต้นและสร้างตัวจัดการที่กำหนดเองของคุณเองโปรดดู การสร้าง ตัวจัดการ การดำเนินการอีเมลที่กำหนดเอง

หากต้องการสร้างลิงก์การตรวจสอบอีเมลให้ระบุอีเมลที่ไม่ได้รับการยืนยันของผู้ใช้ที่มีอยู่และวัตถุ ActionCodeSettings การดำเนินการจะแก้ไขด้วยลิงก์การดำเนินการทางอีเมล อีเมลที่ใช้ต้องเป็นของผู้ใช้ปัจจุบัน

Node.js

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

// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
admin.auth().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 ที่กำหนดเอง

หากคุณไม่ได้ใช้หน้า Landing Page การยืนยันอีเมลเริ่มต้นและสร้างตัวจัดการที่กำหนดเองของคุณเองโปรดดู การสร้าง ตัวจัดการ การดำเนินการกับอีเมลที่กำหนดเอง

ก่อนที่คุณจะสามารถตรวจสอบสิทธิ์ผู้ใช้ด้วยการลงชื่อเข้าใช้ลิงก์อีเมลคุณจะต้อง เปิดใช้งานการลงชื่อเข้าใช้ลิงก์อีเมล สำหรับโครงการ Firebase ของคุณ

ในการสร้างลิงค์ลงชื่อเข้าใช้ให้ระบุอีเมลของผู้ใช้และวัตถุ ActionCodeSettings ต้องใช้วัตถุ ActionCodeSettings ในกรณีนี้เพื่อให้ข้อมูลเกี่ยวกับตำแหน่งที่จะส่งคืนผู้ใช้หลังจากที่มีการคลิกลิงก์เพื่อให้การลงชื่อเข้าใช้เสร็จสมบูรณ์ การดำเนินการจะแก้ไขด้วยลิงก์การดำเนินการทางอีเมล

ไม่เหมือนกับการรีเซ็ตรหัสผ่านและการยืนยันอีเมลอีเมลที่ใช้ไม่จำเป็นต้องเป็นของผู้ใช้ปัจจุบันเนื่องจากการดำเนินการนี้สามารถใช้เพื่อลงทะเบียนผู้ใช้ใหม่ในแอปของคุณผ่านลิงก์อีเมล

Node.js

 // Admin SDK API to generate the sign in with email link.
const usremail = 'user@example.com';
admin.auth().generateSignInWithEmailLink(usremail, actionCodeSettings)
  .then((link) => {
    // Construct sign-in with email link template, embed the link and
    // send using custom SMTP server.
    return sendSignInEmail(usremail, 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 โดยใช้ลิงก์อีเมล วิธีนี้จะช่วยให้ข้อมูลเกี่ยวกับวิธีการลงชื่อเข้าใช้ให้สมบูรณ์หลังจากที่ผู้ใช้คลิกที่ลิงก์และถูกเปลี่ยนเส้นทางกลับไปที่แอป