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

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

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

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

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

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

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

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

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

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

Swift

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

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

  • เมื่อจัดการลิงก์ในวิดเจ็ตการดำเนินการบนเว็บ นี่จะเป็น ในพารามิเตอร์การค้นหา continueUrl
  • เมื่อจัดการลิงก์ในแอปโดยตรง ระบบจะ พารามิเตอร์การค้นหา continueUrl รายการใน Deep Link ของ ลิงก์แบบไดนามิก
iOSBundleID สตริง ตั้งค่ารหัสชุด การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป Apple หาก ติดตั้งแล้ว ต้องลงทะเบียนแอปในคอนโซล หากไม่ใช่ มีการระบุรหัสชุด ค่าของช่องนี้กำหนดเป็นรหัสชุด Bundle หลักของแอป
androidPackageName สตริง ตั้งชื่อแพ็กเกจ Android การดำเนินการนี้จะพยายามเปิดลิงก์ใน แอป Android ถ้าติดตั้งไว้
androidInstallIfNotAvailable Bool ระบุว่าจะติดตั้งแอป Android หากอุปกรณ์รองรับหรือไม่ และแอปยังไม่ได้ติดตั้ง หากฟิลด์นี้ไม่มี แพ็กเกจName มีข้อผิดพลาดเกิดขึ้นเนื่องจากอธิบายว่าชื่อแพ็กเกจต้องเป็น ที่ให้ไว้พร้อมกับฟิลด์นี้
androidMinimumVersion สตริง เวอร์ชันต่ำสุดของแอปที่ขั้นตอนนี้รองรับ ถ้า ขั้นต่ำเวอร์ชันที่ระบุไว้ และติดตั้งแอปเวอร์ชันเก่าแล้ว ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป แอป Android ต้องลงทะเบียนในคอนโซล
handleCodeInApp Bool ลิงก์การดำเนินการกับอีเมลจะเปิดขึ้นในแอปบนอุปกรณ์เคลื่อนที่หรือบนเว็บ ลิงก์ก่อน ระบบตั้งค่าเริ่มต้นไว้เป็น "เท็จ" เมื่อตั้งค่าเป็น "จริง" ลิงก์โค้ดการกระทำ ระบบจะส่งเป็น Universal Link หรือ Android App Link และจะเปิดขึ้น ตามแอปที่ติดตั้งไว้ ในกรณีที่เป็นเท็จ โค้ดจะถูกส่งไปยัง วิดเจ็ตเว็บก่อนแล้วจึงดำเนินการต่อจะเปลี่ยนเส้นทางไปยังแอปหาก ติดตั้งไว้แล้ว
dynamicLinkDomain สตริง ตั้งค่าโดเมนลิงก์แบบไดนามิก (หรือโดเมนย่อย) เพื่อใช้กับลิงก์ปัจจุบัน หากจะเปิดโดยใช้ลิงก์แบบไดนามิกของ Firebase เป็นแบบไดนามิกหลายรายการ โดเมนลิงก์สามารถกำหนดค่าได้ต่อโปรเจ็กต์ ฟิลด์นี้มีฟิลด์ ความสามารถในการเลือกอย่างชัดเจน หากไม่ได้ระบุไว้ โดเมนแรก โดยค่าเริ่มต้น

Objective-C

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

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

  • เมื่อจัดการลิงก์ในวิดเจ็ตการดำเนินการบนเว็บ นี่จะเป็น ในพารามิเตอร์การค้นหา continueUrl
  • เมื่อจัดการลิงก์ในแอปโดยตรง ระบบจะ พารามิเตอร์การค้นหา continueUrl รายการใน Deep Link ของ ลิงก์แบบไดนามิก
iOSBundleID สตริง NS ตั้งค่ารหัสชุด การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป Apple หาก ติดตั้งแล้ว ต้องลงทะเบียนแอปในคอนโซล
androidPackageName สตริง NS ตั้งชื่อแพ็กเกจ Android การดำเนินการนี้จะพยายามเปิดลิงก์ใน แอป Android ถ้าติดตั้งไว้
androidInstallIfNotAvailable บูลีน ระบุว่าจะติดตั้งแอป Android หากอุปกรณ์รองรับหรือไม่ และแอปยังไม่ได้ติดตั้ง หากฟิลด์นี้ไม่มี แพ็กเกจName มีข้อผิดพลาดเกิดขึ้นเนื่องจากอธิบายว่าชื่อแพ็กเกจต้องเป็น ที่ให้ไว้พร้อมกับฟิลด์นี้
androidMinimumVersion สตริง NS เวอร์ชันต่ำสุดของแอปที่ขั้นตอนนี้รองรับ ถ้า ขั้นต่ำเวอร์ชันที่ระบุไว้ และติดตั้งแอปเวอร์ชันเก่าแล้ว ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป แอป Android ต้องลงทะเบียนในคอนโซล
handleCodeInApp บูลีน ลิงก์การดำเนินการกับอีเมลจะเปิดขึ้นในแอปบนอุปกรณ์เคลื่อนที่หรือบนเว็บ ลิงก์ก่อน ระบบตั้งค่าเริ่มต้นไว้เป็น "เท็จ" เมื่อตั้งค่าเป็น "จริง" ลิงก์โค้ดการกระทำ ระบบจะส่งเป็น Universal Link หรือ Android App Link และจะเปิดขึ้น ตามแอปที่ติดตั้งไว้ ในกรณีที่เป็นเท็จ โค้ดจะถูกส่งไปยัง วิดเจ็ตเว็บก่อนแล้วจึงดำเนินการต่อจะเปลี่ยนเส้นทางไปยังแอปหาก ติดตั้งไว้แล้ว
dynamicLinkDomain สตริง NS ตั้งค่าโดเมนลิงก์แบบไดนามิก (หรือโดเมนย่อย) เพื่อใช้กับลิงก์ปัจจุบัน หากจะเปิดโดยใช้ลิงก์แบบไดนามิกของ 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

Swift

var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minimumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

การตรวจสอบสิทธิ์ 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. การกำหนดค่าแอปพลิเคชัน Apple

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

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

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

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

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

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

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

คุณสามารถระบุว่าต้องการจัดการลิงก์โค้ดการกระทำภายใน แอปพลิเคชันบนอุปกรณ์เคลื่อนที่ก่อนหากมีการติดตั้งแล้ว สำหรับแอปพลิเคชัน Android คุณยังสามารถระบุผ่าน androidInstallIfNotAvailable ที่ จะต้องติดตั้งแอปหากอุปกรณ์รองรับ และยังไม่ได้ติดตั้ง ติดตั้งไว้แล้ว หากคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับอุปกรณ์เคลื่อนที่ แอปพลิเคชันนั้นจะเปิดจากหน้าเว็บแทน โดยการตั้งค่า handleCodeInApp เป็น true ใน ออบเจ็กต์ FIRActionCodeSettings (Obj-C) หรือ ActionCodeSettings (Swift) ชื่อแพ็กเกจ Android หรือรหัสชุดของแอปพลิเคชันบนอุปกรณ์เคลื่อนที่จะต้อง ที่ระบุ URL ของเว็บสำรองที่ใช้ที่นี่ ในกรณีที่ไม่มีแอปบนอุปกรณ์เคลื่อนที่ให้ใช้งาน ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการกับอีเมล ค่าเริ่มต้นคือ จัดสรรไว้สำหรับทุกโปรเจ็กต์ โปรดดู การกำหนดค่าเครื่องจัดการอีเมลเพื่อเรียนรู้เพิ่มเติม วิธีปรับแต่งเครื่องจัดการการดำเนินการอีเมล

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

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