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

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

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

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

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

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

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

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

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

FIRActionCodeSettings เช่นความต้องการที่จะให้เมื่อมีการส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน อินเทอร์เฟซนี้ใช้พารามิเตอร์ต่อไปนี้:

Swift

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

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

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

วัตถุประสงค์-C

พารามิเตอร์ พิมพ์ คำอธิบาย
URL NSString

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

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

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

วัตถุประสงค์-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 Auth ใช้ ลิงก์ Firebase แบบไดนามิก เมื่อมีการส่งการเชื่อมโยงที่มีความหมายที่จะเปิดในการประยุกต์ใช้โทรศัพท์มือถือ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์แบบไดนามิกในคอนโซล 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. การกำหนดค่าแอปพลิเคชัน Apple:

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

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

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

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

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

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

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

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

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

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