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

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

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

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

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

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

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

การส่งสถานะของ URL สำหรับดำเนินการต่อในการดําเนินการทางอีเมล

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

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

Swift

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

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

  • เมื่อจัดการลิงก์ในวิดเจ็ตการดําเนินการบนเว็บ ลิงก์นี้จะถือเป็น Deep Link ในพารามิเตอร์การค้นหา continueUrl
  • เมื่อจัดการลิงก์ในแอปโดยตรง รายการนี้คือ continueUrlพารามิเตอร์การค้นหาใน Deep Link ของHostingลิงก์
iOSBundleID สตริง ตั้งค่ารหัสกลุ่ม iOS เพื่อช่วยFirebase Authenticationระบุว่าจะสร้างลิงก์สำหรับเว็บเท่านั้นหรือลิงก์สำหรับอุปกรณ์เคลื่อนที่ซึ่งเปิดในอุปกรณ์ Apple
androidPackageName สตริง ตั้งค่าชื่อแพ็กเกจ Android เพื่อช่วย Firebase Authentication พิจารณาว่าจะสร้างลิงก์สำหรับเว็บเท่านั้นหรือลิงก์สำหรับอุปกรณ์เคลื่อนที่ซึ่งเปิดในอุปกรณ์ Android
handleCodeInApp Bool ระบุว่าลิงก์การดําเนินการของอีเมลจะเปิดในแอปบนอุปกรณ์เคลื่อนที่หรือลิงก์เว็บก่อน ค่าเริ่มต้นคือ False เมื่อตั้งค่าเป็น "จริง" ระบบจะส่งลิงก์โค้ดการดำเนินการเป็น Universal Link หรือ App Link ของ Android และแอปจะเปิดลิงก์ดังกล่าวหากติดตั้งไว้ ในกรณีที่เป็นเท็จ ระบบจะส่งโค้ดไปยังวิดเจ็ตบนเว็บก่อน จากนั้นจะเปลี่ยนเส้นทางไปยังแอปหากติดตั้งไว้
linkDomain สตริง เมื่อกำหนดโดเมนลิงก์โฮสติ้งที่กำหนดเองสำหรับโปรเจ็กต์ ให้ระบุโดเมนที่จะใช้เมื่อแอปบนอุปกรณ์เคลื่อนที่ที่ระบุจะเปิดลิงก์ มิเช่นนั้นระบบจะเลือกโดเมนเริ่มต้นโดยอัตโนมัติ (เช่น PROJECT_ID.firebaseapp.com)
dynamicLinkDomain สตริง เลิกใช้งานแล้ว อย่าระบุพารามิเตอร์นี้

Objective-C

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

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

  • เมื่อจัดการลิงก์ในวิดเจ็ตการดําเนินการบนเว็บ ลิงก์นี้จะถือเป็น Deep Link ในพารามิเตอร์การค้นหา continueUrl
  • เมื่อจัดการลิงก์ในแอปโดยตรง รายการนี้คือ continueUrlพารามิเตอร์การค้นหาใน Deep Link ของHostingลิงก์
iOSBundleID NSString ตั้งค่ารหัสกลุ่ม iOS เพื่อช่วยFirebase Authenticationระบุว่าจะสร้างลิงก์สำหรับเว็บเท่านั้นหรือลิงก์สำหรับอุปกรณ์เคลื่อนที่ซึ่งเปิดในอุปกรณ์ Android หรือ Apple
androidPackageName NSString ตั้งค่าชื่อแพ็กเกจ Android เพื่อช่วยFirebase Authenticationระบุว่าจะสร้างลิงก์สำหรับเว็บเท่านั้นหรือลิงก์สำหรับอุปกรณ์เคลื่อนที่ซึ่งเปิดในอุปกรณ์ Android หรือ Apple
handleCodeInApp BOOL ระบุว่าลิงก์การดําเนินการของอีเมลจะเปิดในแอปบนอุปกรณ์เคลื่อนที่หรือลิงก์เว็บก่อน ค่าเริ่มต้นคือ False เมื่อตั้งค่าเป็น "จริง" ระบบจะส่งลิงก์โค้ดการดำเนินการเป็น Universal Link หรือ App Link ของ Android และแอปจะเปิดลิงก์ดังกล่าวหากติดตั้งไว้ ในกรณีที่เป็นเท็จ ระบบจะส่งโค้ดไปยังวิดเจ็ตบนเว็บก่อน จากนั้นจะเปลี่ยนเส้นทางไปยังแอปหากติดตั้งไว้
linkDomain NSString เมื่อกำหนดโดเมนลิงก์ Hosting ที่กำหนดเองสำหรับโปรเจ็กต์แล้ว ให้ระบุโดเมนที่จะใช้เมื่อแอปบนอุปกรณ์เคลื่อนที่ที่ระบุจะเปิดลิงก์ มิเช่นนั้นระบบจะเลือกโดเมนเริ่มต้นโดยอัตโนมัติ (เช่น PROJECT_ID.firebaseapp.com)
dynamicLinkDomain NSString เลิกใช้งานแล้ว อย่าระบุพารามิเตอร์นี้

ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์ยืนยันอีเมลที่จะเปิดในแอปบนอุปกรณ์เคลื่อนที่ก่อนโดยใช้โดเมนลิงก์ Hosting ที่กําหนดเองcustom-domain.com โดย 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")
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
actionCodeSettings.linkDomain = "custom-domain.com"
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;
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
 actionCodeSettings.linkDomain = @"custom-domain.com";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

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

  1. การกำหนดค่าแอปพลิเคชันของ Apple

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

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

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

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

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

ในกรณีนี้ ลิงก์ภายในพารามิเตอร์การค้นหา continueURL จะเป็นลิงก์ Hosting ที่มีเพย์โหลดเป็น URL ที่ระบุไว้ในออบเจ็กต์ ActionCodeSettings

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

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

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

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

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