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

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

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

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

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

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

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

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

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

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

Swift

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

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

  • เมื่อมีการจัดการลิงก์ในวิดเจ็ตการดำเนินการบนเว็บ นี่คือ Deep Link ในพารามิเตอร์การค้นหา continueUrl
  • เมื่อมีการจัดการลิงก์ในแอปโดยตรง พารามิเตอร์นี้จะเป็นcontinueUrlพารามิเตอร์การค้นหาใน Deep Link ของHostingลิงก์
iOSBundleID สตริง ตั้งค่า Bundle ID ของ 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 ตั้งค่า Bundle ID ของ 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) แม้ว่า รหัส Bundle หรือชื่อแพ็กเกจ Android จะไม่จำเป็น แต่การระบุรหัสหรือชื่อดังกล่าวจะช่วยให้ผู้ใช้ เปลี่ยนเส้นทางกลับไปยังแอปที่ระบุเมื่อดำเนินการรหัสการดำเนินการทางอีเมลเสร็จสมบูรณ์

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

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

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

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

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

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

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