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

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

ซึ่งจะเป็นประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้

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

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

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

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

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

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

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

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

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

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

ตัวอย่างต่อไปนี้จะแสดงวิธีส่งลิงก์สำหรับการยืนยันอีเมลที่ จะเปิดในแอปบนอุปกรณ์เคลื่อนที่ก่อนเป็นลิงก์แบบไดนามิกของ Firebase โดยใช้ โดเมนลิงก์แบบไดนามิก example.page.link (แอป iOS com.example.ios หรือแอป Android com.example.android ซึ่งแอป จะติดตั้งหากยังไม่ได้ติดตั้ง และเวอร์ชันขั้นต่ำคือ 12) Deep Link จะมีเพย์โหลด 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 ใช้ลิงก์แบบไดนามิกของ Firebase เมื่อส่ง ซึ่งควรเปิดในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์แบบไดนามิกในคอนโซล Firebase

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

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

      หากคุณสร้างโดเมน Dynamic Links ไว้แล้ว โปรดจดบันทึกไว้ Dynamic Links โดเมนมักจะมีลักษณะดังตัวอย่างต่อไปนี้

      example.page.link

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

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

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

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

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

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

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

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

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

การจัดการการดำเนินการกับอีเมลในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่

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

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

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

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