คุณสามารถส่งต่อสถานะผ่าน URL สำหรับดำเนินการต่อเมื่อส่งการดำเนินการทางอีเมลเพื่อรีเซ็ตรหัสผ่านหรือยืนยันอีเมลของผู้ใช้ ซึ่งจะช่วยให้ผู้ใช้กลับไปที่แอปได้หลังจากดำเนินการเสร็จแล้ว นอกจากนี้ คุณยังระบุได้ว่าจะจัดการลิงก์การดำเนินการทางอีเมลจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่โดยตรงเมื่อมีการติดตั้งแทนที่จะจัดการจากหน้าเว็บ
ฟีเจอร์นี้มีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้
ผู้ใช้ที่ไม่ได้เข้าสู่ระบบอาจพยายามเข้าถึงเนื้อหาที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ อย่างไรก็ตาม ผู้ใช้อาจลืมรหัสผ่านและทำให้เกิดขั้นตอนการรีเซ็ตรหัสผ่าน เมื่อสิ้นสุดขั้นตอน ผู้ใช้คาดหวังว่าจะกลับไปที่ส่วนของแอปที่พยายามเข้าถึง
แอปพลิเคชันอาจอนุญาตให้เข้าถึงได้เฉพาะบัญชีที่ยืนยันแล้ว ตัวอย่างเช่น แอปจดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนสมัครรับจดหมายข่าว ผู้ใช้จะต้องผ่านขั้นตอนการยืนยันอีเมลและคาดหวังว่าจะกลับไปที่แอปเพื่อสมัครรับจดหมายข่าวให้เสร็จสมบูรณ์
โดยทั่วไป เมื่อผู้ใช้เริ่มขั้นตอนการรีเซ็ตรหัสผ่านหรือการยืนยันอีเมลในแอป Apple ผู้ใช้คาดหวังว่าจะทำขั้นตอนให้เสร็จสมบูรณ์ภายในแอป ความสามารถในการส่งต่อสถานะผ่าน URL สำหรับดำเนินการต่อจึงทำให้การดำเนินการนี้เป็นไปได้
ความสามารถในการส่งต่อสถานะผ่าน URL สำหรับดำเนินการต่อเป็นฟีเจอร์ที่มีประสิทธิภาพซึ่ง Firebase การตรวจสอบสิทธิ์ มีให้และสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก
การส่งต่อสถานะของ URL สำหรับดำเนินการต่อในการดำเนินการทางอีเมล
หากต้องการส่งต่อ URL สำหรับดำเนินการต่ออย่างปลอดภัย คุณต้องเพิ่มโดเมนของ URL เป็นโดเมนที่ได้รับอนุญาตโดยทำดังนี้
ในคอนโซลFirebase ให้ไปที่แท็บ ความปลอดภัย > การตรวจสอบสิทธิ์ > การตั้งค่า
ในส่วนโดเมนที่ได้รับอนุญาต ให้คลิกเพิ่มโดเมน แล้วเพิ่ม URL
คุณต้องระบุอินสแตนซ์ FIRActionCodeSettings เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน อินเทอร์เฟซนี้ใช้พารามิเตอร์ต่อไปนี้
Swift
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
URL |
สตริง | ตั้งค่าลิงก์ (สถานะ/URL สำหรับดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกัน ในบริบทต่างๆ ดังนี้
|
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 สำหรับดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกัน ในบริบทต่างๆ ดังนี้
|
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 Hosting
Firebase Authentication จะใช้ Firebase Hosting เมื่อส่ง ลิงก์ที่ต้องการให้เปิดในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์ Hosting ในคอนโซล Firebase
การกำหนดค่าแอปพลิเคชัน Apple
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน คุณจะต้องกำหนดค่าโดเมนลิงก์ Hosting เป็นโดเมนที่เชื่อมโยงในความสามารถของแอปพลิเคชัน
- ดูข้อมูลเพิ่มเติมได้ที่ วิธีการรับลิงก์ Hosting ของ iOS
การกำหนดค่าแอปพลิเคชัน Android
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android คุณต้องระบุชื่อแพ็กเกจของแอปในส่วนการตั้งค่าโปรเจ็กต์ของคอนโซล Firebase นอกจากนี้ คุณต้องระบุ SHA-1 และ SHA-256 ของใบรับรองแอปพลิเคชันด้วย
- นอกจากนี้ คุณยังต้องกำหนดค่าตัวกรอง Intent สำหรับ Deep Link ในไฟล์
AndroidManifest.xml - ดูข้อมูลเพิ่มเติมได้ที่ วิธีการรับลิงก์ 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 เพื่อให้การเปลี่ยนแปลงมีผล เช่น อีเมลที่จะยืนยัน