Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

ผ่านสถานะในการดำเนินการอีเมล

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

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

สิ่งนี้มีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้:

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

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

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

ความสามารถในการส่งผ่านสถานะผ่าน URL ต่อเป็นคุณลักษณะที่มีประสิทธิภาพที่ Firebase Auth มีให้และสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก

ผ่านสถานะ/ดำเนินการต่อ URL ในการดำเนินการอีเมล

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

ต้องระบุอินสแตนซ์ firebase.auth.ActionCodeSettings เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน อินเทอร์เฟซนี้ใช้พารามิเตอร์ต่อไปนี้:

พารามิเตอร์ พิมพ์ คำอธิบาย
url สตริง

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

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

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

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

Firebase Auth ใช้ Firebase Dynamic Links เมื่อส่งลิงก์ที่ตั้งใจจะเปิดในแอปพลิเคชันมือถือ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์แบบไดนามิกในคอนโซล Firebase

  1. เปิดใช้งานลิงก์แบบไดนามิกของ Firebase:

    1. ใน คอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก
    2. หากคุณยังไม่ได้ยอมรับข้อกำหนด Dynamic Links และสร้างโดเมน Dynamic Links ให้ดำเนินการทันที

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

      example.page.link

      คุณจะต้องใช้ค่านี้เมื่อกำหนดค่าแอป Apple หรือ Android เพื่อสกัดกั้นลิงก์ขาเข้า

  2. การกำหนดค่าแอปพลิเคชัน Android:

    1. หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android คุณต้องระบุชื่อแพ็กเกจ Android ในการตั้งค่าโปรเจ็กต์ Firebase Console นอกจากนี้ จำเป็นต้องมี SHA-1 และ SHA-256 ของใบรับรองแอปพลิเคชัน
    2. คุณจะต้องกำหนดค่าตัวกรองเจตนาสำหรับลิงก์ในรายละเอียดในไฟล์ AndroidManifest.xml
    3. สำหรับข้อมูลเพิ่มเติม โปรดดูคำแนะนำในการ รับลิงก์แบบไดนามิกของ Android
  3. การกำหนดค่าแอปพลิเคชัน iOS:

    1. หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน iOS คุณต้องระบุ ID ชุด iOS ในการตั้งค่าโปรเจ็กต์ Firebase Console นอกจากนี้ ต้องระบุ App Store ID และ Apple Developer Team ID ด้วย
    2. คุณจะต้องกำหนดค่าโดเมนลิงก์สากล FDL เป็นโดเมนที่เกี่ยวข้องในความสามารถของแอปพลิเคชันของคุณ
    3. หากคุณวางแผนที่จะเผยแพร่แอปพลิเคชันของคุณเป็น iOS เวอร์ชัน 8 หรือต่ำกว่า คุณจะต้องตั้งค่า iOS Bundle ID ของคุณเป็นรูปแบบที่กำหนดเองสำหรับ URL ขาเข้า
    4. สำหรับข้อมูลเพิ่มเติม โปรดดูคำแนะนำในการ รับลิงก์ไดนามิกของ iOS

การจัดการกับการดำเนินการอีเมลในเว็บแอปพลิเคชัน

คุณสามารถระบุได้ว่าต้องการจัดการลิงก์รหัสการดำเนินการจากเว็บแอปพลิเคชันก่อน จากนั้นจึงเปลี่ยนเส้นทางไปยังหน้าเว็บอื่นหรือแอปพลิเคชันมือถือหลังจากดำเนินการเสร็จสิ้นแล้ว โดยที่แอปพลิเคชันมือถือจะพร้อมใช้งาน สิ่งนี้ทำได้โดยการตั้งค่า handleCodeInApp false ในอ็อบเจ็กต์ firebase.auth.ActionCodeSettings แม้ว่าจะไม่จำเป็นต้องระบุรหัสบันเดิล iOS หรือชื่อแพ็กเกจ Android หากระบุให้ผู้ใช้จะเปลี่ยนเส้นทางกลับไปที่แอปที่ระบุเมื่อกรอกโค้ดการดำเนินการอีเมลให้สมบูรณ์

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

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

เมื่อจัดการกับการดำเนินการของอีเมล เช่น การยืนยันอีเมล โค้ดการดำเนินการจากพารามิเตอร์การสืบค้น oobCode จะต้องแยกวิเคราะห์จากลิงก์ในรายละเอียด จากนั้นจึงนำไปใช้ผ่าน applyActionCode เพื่อให้การเปลี่ยนแปลงมีผล เช่น อีเมลที่ต้องได้รับการยืนยัน

การจัดการกับการดำเนินการอีเมลในแอปพลิเคชันมือถือ

คุณสามารถระบุได้ว่าต้องการจัดการลิงก์รหัสการดำเนินการภายในแอปพลิเคชันมือถือของคุณก่อนหรือไม่ หากติดตั้งไว้ ด้วยแอปพลิเคชัน Android คุณยังสามารถระบุผ่าน android.installApp ที่จะติดตั้งแอปหากอุปกรณ์รองรับและยังไม่ได้ติดตั้ง หากมีการคลิกลิงก์จากอุปกรณ์ที่ไม่สนับสนุนแอปพลิเคชันมือถือ ลิงก์นั้นจะเปิดจากหน้าเว็บแทน สิ่งนี้ทำได้โดยการตั้งค่า handleCodeInApp true ในอ็อบเจ็กต์ firebase.auth.ActionCodeSettings ต้องระบุชื่อแพ็คเกจ Android หรือรหัสชุด iOS ของแอปพลิเคชันมือถือด้วย

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

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

เมื่อจัดการกับการดำเนินการของอีเมล เช่น การยืนยันอีเมล โค้ดการดำเนินการจากพารามิเตอร์การสืบค้น oobCode จะต้องแยกวิเคราะห์จากลิงก์ในรายละเอียด จากนั้นจึงนำไปใช้ผ่าน applyActionCode เพื่อให้การเปลี่ยนแปลงมีผล กล่าวคือ อีเมลจะต้องได้รับการยืนยัน