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

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

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

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

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

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

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

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

หากต้องการส่งต่อ URL สำหรับดำเนินการต่ออย่างปลอดภัย คุณต้องเพิ่มโดเมนของ URL เป็นโดเมนที่ได้รับอนุญาตโดยทำดังนี้

  1. ในคอนโซลFirebase ให้ไปที่แท็บ ความปลอดภัย > การตรวจสอบสิทธิ์ > การตั้งค่า

  2. ในส่วนโดเมนที่ได้รับอนุญาต ให้คลิกเพิ่มโดเมน แล้วเพิ่ม URL

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

Swift

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

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

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

ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์ยืนยันทางอีเมลที่ จะเปิดในแอปบนอุปกรณ์เคลื่อนที่ก่อนโดยใช้โดเมนลิงก์ custom-domain.comที่กำหนดเองHosting 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. ดูข้อมูลเพิ่มเติมได้ที่ วิธีการรับลิงก์ Hosting ของ iOS
  2. การกำหนดค่าแอปพลิเคชัน Android

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

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

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

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

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

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

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

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

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

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