คุณสามารถส่งสถานะผ่าน URL ดำเนินการต่อได้เมื่อส่งการดำเนินการทางอีเมลเพื่อรีเซ็ตรหัสผ่านหรือยืนยันอีเมลของผู้ใช้ สิ่งนี้ทำให้ผู้ใช้สามารถกลับไปยังแอปได้หลังจากการดำเนินการเสร็จสิ้น นอกจากนี้ คุณยังสามารถระบุได้ว่าจะจัดการลิงก์การดำเนินการอีเมลโดยตรงจากแอปพลิเคชันมือถือหรือไม่ เมื่อติดตั้งแทนหน้าเว็บ
สิ่งนี้มีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้:
ผู้ใช้ที่ไม่ได้เข้าสู่ระบบอยู่ในขณะนี้อาจพยายามเข้าถึงเนื้อหาที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ อย่างไรก็ตาม ผู้ใช้อาจลืมรหัสผ่าน จึงทำให้เกิดขั้นตอนการรีเซ็ตรหัสผ่าน เมื่อสิ้นสุดโฟลว์ ผู้ใช้คาดว่าจะกลับไปยังส่วนของแอปที่พวกเขาพยายามเข้าถึง
แอปพลิเคชันอาจเสนอการเข้าถึงบัญชีที่ตรวจสอบแล้วเท่านั้น ตัวอย่างเช่น แอปจดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนสมัคร ผู้ใช้จะต้องทำตามขั้นตอนการยืนยันอีเมลและคาดว่าจะถูกส่งกลับไปยังแอปเพื่อดำเนินการสมัครสมาชิกให้เสร็จสมบูรณ์
โดยทั่วไป เมื่อผู้ใช้เริ่มการรีเซ็ตรหัสผ่านหรือขั้นตอนการยืนยันอีเมลในแอพ Apple พวกเขาคาดหวังว่าจะดำเนินการขั้นตอนภายในแอพให้เสร็จสิ้น ความสามารถในการส่งสถานะผ่าน URL ดำเนินการต่อทำให้สิ่งนี้เป็นไปได้
การมีความสามารถในการส่งสถานะผ่าน URL ดำเนินการต่อถือเป็นคุณลักษณะที่มีประสิทธิภาพที่ Firebase Auth มอบให้และสามารถปรับปรุงประสบการณ์ผู้ใช้ได้อย่างมาก
การส่งผ่านสถานะ/URL ต่อไปในการดำเนินการกับอีเมล
เพื่อที่จะส่ง URL ต่อไปได้อย่างปลอดภัย โดเมนสำหรับ URL จะต้องอยู่ในรายการที่อนุญาตพิเศษใน คอนโซล Firebase ซึ่งทำได้ในส่วน การรับรองความถูกต้อง โดยการเพิ่มโดเมนนี้ลงในรายการ โดเมนที่ได้รับอนุญาต ภายใต้แท็บ วิธีการลงชื่อ เข้าใช้ หากยังไม่มี
ต้องระบุอินสแตนซ์ FIRActionCodeSettings
เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน อินเทอร์เฟซนี้รับพารามิเตอร์ต่อไปนี้:
สวิฟท์
พารามิเตอร์ | พิมพ์ | คำอธิบาย |
---|---|---|
URL | สตริง | ตั้งค่าลิงก์ (สถานะ/URL ต่อไป) ซึ่งมีความหมายที่แตกต่างกันในบริบทที่แตกต่างกัน:
|
iOSBundleID | สตริง | ตั้งค่า ID บันเดิล การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป Apple หากมีการติดตั้งไว้ แอปจะต้องลงทะเบียนในคอนโซล หากไม่มีการระบุ Bundle ID ค่าของฟิลด์นี้จะถูกตั้งค่าเป็น ID บันเดิลของบันเดิลหลักของแอป |
androidPackageName | สตริง | ตั้งชื่อแพ็คเกจ Android การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป Android หากติดตั้งไว้ |
androidInstallIfNotAvailable | บูล | ระบุว่าจะติดตั้งแอป Android หรือไม่หากอุปกรณ์รองรับและยังไม่ได้ติดตั้งแอป หากระบุช่องนี้โดยไม่มี packageName ระบบจะแสดงข้อผิดพลาดโดยอธิบายว่าต้องระบุ packageName ร่วมกับช่องนี้ |
androidMinimumVersion | สตริง | เวอร์ชันขั้นต่ำของแอปที่รองรับในโฟลว์นี้ หากมีการระบุเวอร์ชันขั้นต่ำและติดตั้งแอปเวอร์ชันเก่า ระบบจะนำผู้ใช้ไปที่ Play Store เพื่ออัปเกรดแอป แอป Android จำเป็นต้องลงทะเบียนในคอนโซล |
handleCodeInApp | บูล | ไม่ว่าลิงก์การดำเนินการอีเมลจะเปิดในแอปบนมือถือหรือเว็บลิงก์ก่อน ค่าเริ่มต้นเป็นเท็จ เมื่อตั้งค่าเป็นจริง ลิงก์โค้ดการดำเนินการจะถูกส่งเป็น Universal Link หรือ Android App Link และจะเปิดโดยแอปหากติดตั้งไว้ ในกรณีที่เป็นเท็จ โค้ดจะถูกส่งไปยังเว็บวิดเจ็ตก่อน จากนั้นดำเนินการต่อจะเปลี่ยนเส้นทางไปยังแอปหากติดตั้งไว้ |
dynamicLinkDomain | สตริง | ตั้งค่าโดเมนลิงก์แบบไดนามิก (หรือโดเมนย่อย) เพื่อใช้สำหรับลิงก์ปัจจุบัน หากต้องการเปิดโดยใช้ Firebase Dynamic Links เนื่องจากสามารถกำหนดค่าโดเมนลิงก์แบบไดนามิกได้หลายโดเมนต่อโปรเจ็กต์ ฟิลด์นี้จึงทำให้สามารถเลือกโดเมนได้อย่างชัดเจน หากไม่มีการระบุ โดเมนแรกจะถูกใช้เป็นค่าเริ่มต้น |
วัตถุประสงค์-C
พารามิเตอร์ | พิมพ์ | คำอธิบาย |
---|---|---|
URL | NSString | ตั้งค่าลิงก์ (สถานะ/URL ต่อไป) ซึ่งมีความหมายที่แตกต่างกันในบริบทที่แตกต่างกัน:
|
iOSBundleID | NSString | ตั้งค่า ID บันเดิล การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป Apple หากมีการติดตั้งไว้ แอปจะต้องลงทะเบียนในคอนโซล |
androidPackageName | NSString | ตั้งชื่อแพ็คเกจ Android การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป Android หากติดตั้งไว้ |
androidInstallIfNotAvailable | บูล | ระบุว่าจะติดตั้งแอป Android หรือไม่หากอุปกรณ์รองรับและยังไม่ได้ติดตั้งแอป หากระบุช่องนี้โดยไม่มี packageName ระบบจะแสดงข้อผิดพลาดโดยอธิบายว่าต้องระบุ packageName ร่วมกับช่องนี้ |
androidMinimumVersion | NSString | เวอร์ชันขั้นต่ำของแอปที่รองรับในโฟลว์นี้ หากมีการระบุเวอร์ชันขั้นต่ำและติดตั้งแอปเวอร์ชันเก่า ระบบจะนำผู้ใช้ไปที่ Play Store เพื่ออัปเกรดแอป แอป Android จำเป็นต้องลงทะเบียนในคอนโซล |
handleCodeInApp | บูล | ไม่ว่าลิงก์การดำเนินการอีเมลจะเปิดในแอปบนมือถือหรือเว็บลิงก์ก่อน ค่าเริ่มต้นเป็นเท็จ เมื่อตั้งค่าเป็นจริง ลิงก์โค้ดการดำเนินการจะถูกส่งเป็น Universal Link หรือ Android App Link และจะเปิดโดยแอปหากติดตั้งไว้ ในกรณีที่เป็นเท็จ โค้ดจะถูกส่งไปยังเว็บวิดเจ็ตก่อน จากนั้นดำเนินการต่อจะเปลี่ยนเส้นทางไปยังแอปหากติดตั้งไว้ |
dynamicLinkDomain | NSString | ตั้งค่าโดเมนลิงก์แบบไดนามิก (หรือโดเมนย่อย) เพื่อใช้สำหรับลิงก์ปัจจุบัน หากต้องการเปิดโดยใช้ Firebase Dynamic Links เนื่องจากสามารถกำหนดค่าโดเมนลิงก์แบบไดนามิกได้หลายโดเมนต่อโปรเจ็กต์ ฟิลด์นี้จึงทำให้สามารถเลือกโดเมนได้อย่างชัดเจน หากไม่มีการระบุ โดเมนแรกจะถูกใช้เป็นค่าเริ่มต้น |
ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์ยืนยันอีเมลที่จะเปิดในแอปบนอุปกรณ์เคลื่อนที่ก่อนเป็น Firebase Dynamic Link โดยใช้โดเมนลิงก์แบบไดนามิกที่กำหนดเอง example.page.link
(แอป iOS com.example.ios
หรือแอป Android com.example.android
โดยที่แอปจะติดตั้งหากยังไม่ได้ติดตั้งและเวอร์ชันขั้นต่ำคือ 12
) ลิงก์ในรายละเอียดจะมีเพย์โหลด URL ดำเนินการต่อ https://www.example.com/?email=user@example.com
สวิฟท์
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, minimumVersion:"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
Firebase Auth ใช้ Firebase Dynamic Links เมื่อส่งลิงก์ที่มีไว้เพื่อเปิดในแอปพลิเคชันมือถือ หากต้องการใช้ฟีเจอร์นี้ จำเป็นต้องกำหนดค่าลิงก์แบบไดนามิกในคอนโซล Firebase
เปิดใช้งานลิงก์ไดนามิกของ Firebase:
- ใน คอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก
หากคุณยังไม่ได้ยอมรับข้อกำหนดของลิงก์แบบไดนามิกและสร้างโดเมนลิงก์แบบไดนามิก ให้ดำเนินการทันที
หากคุณสร้างโดเมน Dynamic Links แล้ว โปรดจดบันทึกไว้ โดยทั่วไปโดเมนลิงก์แบบไดนามิกจะมีลักษณะเหมือนตัวอย่างต่อไปนี้:
example.page.link
คุณจะต้องใช้ค่านี้เมื่อกำหนดค่าแอป Apple หรือ Android เพื่อสกัดกั้นลิงก์ขาเข้า
การกำหนดค่าแอปพลิเคชัน Android:
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android ของคุณ จะต้องระบุชื่อแพ็กเกจ Android ในการตั้งค่าโปรเจ็กต์คอนโซล Firebase นอกจากนี้ จำเป็นต้องจัดเตรียมใบรับรองการสมัคร SHA-1 และ SHA-256 ด้วย
- นอกจากนี้ คุณจะต้องกำหนดค่าตัวกรอง Intent สำหรับ Deep Link ในไฟล์ AndroidManifest.xml ของคุณด้วย
- สำหรับข้อมูลเพิ่มเติม โปรดดู คำแนะนำในการรับลิงก์แบบไดนามิกของ Android
การกำหนดค่าแอปพลิเคชัน Apple:
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชันของคุณ จะต้องระบุรหัสบันเดิลในการตั้งค่าโปรเจ็กต์คอนโซล Firebase นอกจากนี้ จำเป็นต้องระบุ App Store ID และ Apple Developer Team ID ด้วย
- คุณจะต้องกำหนดค่าโดเมนลิงก์สากล FDL เป็นโดเมนที่เกี่ยวข้องในความสามารถของแอปพลิเคชันของคุณ
- หากคุณวางแผนที่จะเผยแพร่แอปพลิเคชันของคุณไปยัง iOS เวอร์ชัน 8 และต่ำกว่า คุณจะต้องตั้งค่า ID บันเดิลของคุณเป็นรูปแบบที่กำหนดเองสำหรับ URL ที่เข้ามา
- สำหรับข้อมูลเพิ่มเติม โปรดดู คำแนะนำการรับลิงก์ไดนามิกของแพลตฟอร์ม Apple
การจัดการการดำเนินการอีเมลในเว็บแอปพลิเคชัน
คุณสามารถระบุว่าคุณต้องการจัดการลิงก์โค้ดการดำเนินการจากเว็บแอปพลิเคชันก่อน จากนั้นจึงเปลี่ยนเส้นทางไปยังเว็บเพจหรือแอปพลิเคชันมือถืออื่นหลังจากดำเนินการเสร็จสิ้น โดยที่แอปพลิเคชันบนมือถือพร้อมใช้งาน ซึ่งทำได้โดยการตั้ง handleCodeInApp
เป็น false
ในวัตถุ FIRActionCodeSettings
(Obj-C) หรือ ActionCodeSettings
(Swift) แม้ว่าไม่จำเป็นต้องใช้รหัสบันเดิลหรือชื่อแพ็กเกจ Android แต่การระบุจะทำให้ผู้ใช้เปลี่ยนเส้นทางกลับไปยังแอปที่ระบุได้เมื่อกรอกโค้ดการดำเนินการอีเมลให้สมบูรณ์
URL ของเว็บที่ใช้ที่นี่เป็น URL ที่กำหนดค่าในส่วนเทมเพลตการดำเนินการอีเมล ค่าเริ่มต้นจะถูกจัดเตรียมให้กับทุกโปรเจ็กต์ โปรดดู การปรับแต่งตัวจัดการอีเมล เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวจัดการการดำเนินการกับอีเมล
ในกรณีนี้ ลิงก์ภายในพารามิเตอร์การสืบค้น continueURL
จะเป็นลิงก์ FDL ซึ่งมีเพย์โหลดเป็น URL
ที่ระบุในออบเจ็กต์ ActionCodeSettings
แม้ว่าคุณจะสามารถสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปของคุณได้โดยไม่ต้องพึ่งพาเพิ่มเติม แต่เราขอแนะนำให้ใช้ไลบรารีไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ลิงก์ในรายละเอียดให้กับคุณ
เมื่อจัดการการดำเนินการกับอีเมล เช่น การยืนยันอีเมล โค้ดการดำเนินการจากพารามิเตอร์การค้นหา oobCode
จะต้องได้รับการแยกวิเคราะห์จากลิงก์ในรายละเอียด จากนั้นจึงใช้ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผล เช่น อีเมลที่จะได้รับการยืนยัน
การจัดการการดำเนินการกับอีเมลในแอปพลิเคชันมือถือ
คุณสามารถระบุว่าคุณต้องการจัดการลิงก์โค้ดการดำเนินการภายในแอปพลิเคชันมือถือของคุณก่อนหรือไม่ หากมีการติดตั้งไว้ ด้วยแอปพลิเคชัน Android คุณยังสามารถระบุผ่าน androidInstallIfNotAvailable
ได้ว่าจะต้องติดตั้งแอปหากอุปกรณ์รองรับและยังไม่ได้ติดตั้ง หากคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับแอปพลิเคชันมือถือ ลิงก์นั้นจะถูกเปิดจากหน้าเว็บแทน ซึ่งทำได้โดยการตั้ง 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
เพื่อให้การเปลี่ยนแปลงมีผล เช่น อีเมลที่จะได้รับการยืนยัน