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

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

คุณสามารถส่งสถานะผ่าน 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 เพื่อให้การเปลี่ยนแปลงมีผล กล่าวคือ อีเมลจะต้องได้รับการยืนยัน