คุณสามารถส่งต่อสถานะผ่าน URL สำหรับดำเนินการต่อเมื่อส่งการดำเนินการทางอีเมลสำหรับการรีเซ็ตรหัสผ่านหรือยืนยันอีเมลของผู้ใช้ ซึ่งจะช่วยให้ผู้ใช้กลับไปยังแอปได้หลังจากดำเนินการเสร็จสมบูรณ์ นอกจากนี้ คุณยังระบุได้ว่าจะจัดการลิงก์การดำเนินการทางอีเมลจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่โดยตรงเมื่อมีการติดตั้งแอปพลิเคชันดังกล่าวแทนที่จะจัดการจากหน้าเว็บ
ฟีเจอร์นี้มีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้
ผู้ใช้ที่ไม่ได้เข้าสู่ระบบอาจพยายามเข้าถึงเนื้อหาที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ อย่างไรก็ตาม ผู้ใช้อาจลืมรหัสผ่านและทำให้เกิดขั้นตอนการรีเซ็ตรหัสผ่าน เมื่อสิ้นสุดขั้นตอน ผู้ใช้คาดหวังว่าจะกลับไปยังส่วนของแอปที่พยายามเข้าถึง
แอปพลิเคชันอาจอนุญาตให้เข้าถึงได้เฉพาะบัญชีที่ยืนยันแล้ว ตัวอย่างเช่น แอปจดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนสมัครรับข้อมูล ผู้ใช้จะต้องทำตามขั้นตอนการยืนยันอีเมลและคาดหวังว่าจะกลับไปยังแอปเพื่อสมัครรับข้อมูลให้เสร็จสมบูรณ์
โดยทั่วไป เมื่อผู้ใช้เริ่มขั้นตอนการรีเซ็ตรหัสผ่านหรือการยืนยันอีเมลในแอป Apple ผู้ใช้คาดหวังว่าจะทำตามขั้นตอนให้เสร็จสมบูรณ์ภายในแอป ความสามารถในการส่งต่อสถานะผ่าน URL สำหรับดำเนินการต่อจะช่วยให้ทำเช่นนี้ได้
ความสามารถในการส่งต่อสถานะผ่าน URL สำหรับดำเนินการต่อเป็นฟีเจอร์ที่มีประสิทธิภาพซึ่ง Firebase Auth มีให้และสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก
การส่งต่อสถานะ/URL สำหรับดำเนินการต่อในการดำเนินการทางอีเมล
หากต้องการส่งต่อ URL สำหรับดำเนินการต่ออย่างปลอดภัย คุณต้องเพิ่มโดเมนของ URL เป็นโดเมนที่ได้รับอนุญาต โดยทำดังนี้
ในคอนโซลFirebase ให้ไปที่แท็บ ความปลอดภัย > การตรวจสอบสิทธิ์ > การตั้งค่า
ในส่วนโดเมนที่ได้รับอนุญาต ให้คลิกเพิ่มโดเมน แล้วเพิ่ม URL
คุณต้องระบุอินสแตนซ์ ActionCodeSettings เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน อินเทอร์เฟซนี้ใช้พารามิเตอร์ต่อไปนี้
| พารามิเตอร์ | ประเภท | คำอธิบาย | |||
|---|---|---|---|---|---|
url |
สตริง | ตั้งค่าลิงก์ (สถานะ/URL สำหรับดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกัน ในบริบทต่างๆ ดังนี้
|
|||
iOSBundleId |
สตริง | ตั้งค่ารหัสชุด ระบบจะพยายามเปิดลิงก์ในแอป Apple หาก มีการติดตั้ง โดยแอปต้องลงทะเบียนในคอนโซล หากไม่ได้ระบุรหัสชุด ระบบจะตั้งค่าของช่องนี้เป็นรหัสชุดของ ชุดหลักของแอป | |||
androidPackageName |
สตริง | ตั้งค่าชื่อแพ็กเกจ Android ระบบจะพยายามเปิดลิงก์ในแอป Android หากมีการติดตั้ง | |||
androidInstallApp |
bool | ระบุว่าจะติดตั้งแอป Android หรือไม่ หากอุปกรณ์รองรับและยังไม่ได้ติดตั้งแอป หากระบุช่องนี้โดยไม่มี packageName ระบบจะแสดงข้อผิดพลาดที่อธิบายว่าต้องระบุ packageName ร่วมกับช่องนี้ | |||
androidMinimumVersion |
สตริง | เวอร์ชันต่ำสุดของแอปที่รองรับในขั้นตอนการทำงานนี้ หากระบุ minimumVersion และมีการติดตั้งแอปเวอร์ชันเก่ากว่า ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป โดยแอป Android ต้องลงทะเบียนในคอนโซล | |||
handleCodeInApp |
bool | ระบุว่าจะเปิดลิงก์การดำเนินการทางอีเมลในแอปบนอุปกรณ์เคลื่อนที่หรือเว็บ ลิงก์ก่อน ค่าเริ่มต้นคือ "เท็จ" เมื่อตั้งค่าเป็น "จริง" ระบบจะส่งลิงก์รหัสการดำเนินการ เป็น Universal Link หรือ Android App Link และแอปจะเปิดลิงก์หากมีการติดตั้ง ในกรณีที่ตั้งค่าเป็น "เท็จ" ระบบจะส่งรหัสไปยัง วิดเจ็ตเว็บก่อน จากนั้นเมื่อดำเนินการต่อ ระบบจะเปลี่ยนเส้นทางไปยังแอปหากมีการติดตั้ง | |||
dynamicLinkDomain |
สตริง | (เลิกใช้งานแล้ว ให้ใช้ `linkDomain`) ตั้งค่าโดเมน (หรือโดเมนย่อย) ของลิงก์แบบไดนามิกที่จะใช้กับลิงก์ปัจจุบัน หากจะเปิดลิงก์โดยใช้ลิงก์แบบไดนามิกของ Firebase เนื่องจากกำหนดค่าโดเมนของลิงก์แบบไดนามิกได้หลายโดเมนต่อโปรเจ็กต์ ช่องนี้จึงช่วยให้คุณเลือกโดเมนได้อย่างชัดเจน หากไม่ได้ระบุโดเมน ระบบจะใช้โดเมนแรกโดยค่าเริ่มต้น | linkDomain |
สตริง | โดเมนโฮสติ้งของ Firebase ที่กำหนดเองซึ่งไม่บังคับให้ใช้เมื่อจะเปิดลิงก์ผ่านแอปบนอุปกรณ์เคลื่อนที่ที่ระบุ โดยโดเมนต้องกำหนดค่าในโฮสติ้งของ Firebase และเป็นของโปรเจ็กต์ โดเมนนี้ต้องไม่ใช่โดเมนโฮสติ้งเริ่มต้น (`web.app` หรือ `firebaseapp.com`) และจะแทนที่การตั้งค่า `dynamicLinkDomain` ที่เลิกใช้งานแล้ว |
ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์สำหรับการยืนยันอีเมลที่จะเปิดในแอปบนอุปกรณ์เคลื่อนที่เป็นอันดับแรกในรูปแบบลิงก์แบบไดนามิกของ Firebase โดยใช้โดเมนของลิงก์แบบไดนามิกที่กำหนดเอง example.page.link (แอป iOS com.example.ios หรือแอป Android com.example.android ซึ่งแอปจะติดตั้งหากยังไม่ได้ติดตั้งและเวอร์ชันต่ำสุดคือ 12) Deep Link จะมีเพย์โหลด URL สำหรับดำเนินการต่อ https://www.example.com/?email=user@example.com
final user = FirebaseAuth.instance.currentUser;
final actionCodeSettings = ActionCodeSettings(
url: "http://www.example.com/verify?email=${user?.email}",
iOSBundleId: "com.example.ios",
androidPackageName: "com.example.android",
);
await user?.sendEmailVerification(actionCodeSettings);
การกำหนดค่าลิงก์แบบไดนามิกของ Firebase
Firebase Auth ใช้ ลิงก์แบบไดนามิกของ Firebase เมื่อส่ง ลิงก์ที่ต้องการให้เปิดในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์แบบไดนามิกในคอนโซล Firebase
เปิดใช้ลิงก์แบบไดนามิกของ Firebase โดยทำดังนี้
ในคอนโซล Firebase ให้เปิดส่วนลิงก์แบบไดนามิก
หากยังไม่ได้ยอมรับข้อกำหนดของลิงก์แบบไดนามิกและสร้างโดเมนของลิงก์แบบไดนามิก ให้ดำเนินการเลย
หากสร้างโดเมนของลิงก์แบบไดนามิกไว้แล้ว ให้จดโดเมนดังกล่าวไว้ โดยทั่วไปโดเมนของลิงก์แบบไดนามิกจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้
example.page.link
คุณจะต้องใช้ค่านี้เมื่อกำหนดค่าแอป Apple หรือ Android เพื่อสกัดกั้นลิงก์ขาเข้า
การกำหนดค่าแอปพลิเคชัน Android
- หากวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android คุณต้องระบุชื่อแพ็กเกจ Android ในการตั้งค่าโปรเจ็กต์ของคอนโซล Firebase นอกจากนี้ คุณต้องระบุ SHA-1 และ SHA-256 ของใบรับรองแอปพลิเคชันด้วย
- นอกจากนี้ คุณยังต้องกำหนดค่าตัวกรอง Intent สำหรับ Deep Link ในไฟล์ AndroidManifest.xml ด้วย
- ดูข้อมูลเพิ่มเติมได้ที่ วิธีการรับลิงก์แบบไดนามิกของ Android
การกำหนดค่าแอปพลิเคชัน Apple
- หากวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน คุณต้องระบุรหัสชุดในการตั้งค่าโปรเจ็กต์ของคอนโซล Firebase นอกจากนี้ คุณต้องระบุรหัส App Store และรหัสทีมนักพัฒนาแอปของ Apple ด้วย
- นอกจากนี้ คุณยังต้องกำหนดค่าโดเมน Universal Link ของ FDL เป็นโดเมนที่เชื่อมโยงในความสามารถของแอปพลิเคชันด้วย
- หากวางแผนที่จะเผยแพร่แอปพลิเคชันไปยัง iOS เวอร์ชัน 8 และต่ำกว่า คุณจะต้องตั้งค่ารหัสชุดเป็น Scheme ที่กำหนดเองสำหรับ URL ขาเข้า
- ดูข้อมูลเพิ่มเติมได้ที่ วิธีการรับลิงก์แบบไดนามิกของแพลตฟอร์ม Apple
การจัดการการดำเนินการทางอีเมลในเว็บแอปพลิเคชัน
คุณสามารถระบุได้ว่าจะจัดการลิงก์รหัสการดำเนินการจากเว็บแอปพลิเคชันก่อน แล้วเปลี่ยนเส้นทางไปยังหน้าเว็บหรือแอปพลิเคชันบนอุปกรณ์เคลื่อนที่อื่นหลังจากดำเนินการเสร็จสมบูรณ์ หากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่พร้อมใช้งาน
โดยทำได้ด้วยการตั้งค่า handleCodeInApp เป็น false ในออบเจ็กต์ ActionCodeSettings แม้ว่าระบบจะไม่กำหนดให้ระบุรหัสชุดหรือชื่อแพ็กเกจ Android แต่การระบุข้อมูลดังกล่าวจะช่วยให้ผู้ใช้เปลี่ยนเส้นทางกลับไปยังแอปที่ระบุเมื่อรหัสการดำเนินการทางอีเมลเสร็จสมบูรณ์
URL เว็บที่ใช้ที่นี่คือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการทางอีเมล ระบบจะจัดเตรียม URL เริ่มต้นไว้ให้สำหรับทุกโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ วิธีปรับแต่งตัวจัดการการดำเนินการทางอีเมลได้ที่ หัวข้อการปรับแต่งตัวจัดการอีเมล
ในกรณีนี้ ลิงก์ภายในพารามิเตอร์การค้นหา continueURL จะเป็น
ลิงก์ FDL ที่มีเพย์โหลดเป็น URL ที่ระบุใน ActionCodeSettings
ออบเจ็กต์ แม้ว่าคุณจะสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปได้โดยไม่ต้องมีทรัพยากร Dependency เพิ่มเติม แต่เราขอแนะนำให้ใช้ไลบรารีของไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ Deep Link ให้คุณ
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล คุณต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode จาก Deep Link แล้วใช้รหัสผ่าน applyActionCode เพื่อให้การเปลี่ยนแปลงมีผล เช่น ยืนยันอีเมล
การจัดการการดำเนินการทางอีเมลในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่
คุณสามารถระบุได้ว่าจะจัดการลิงก์รหัสการดำเนินการภายในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ก่อนหรือไม่ หากมีการติดตั้ง สำหรับแอปพลิเคชัน Android คุณยังระบุผ่าน androidInstallApp ได้ด้วยว่าจะติดตั้งแอปหรือไม่ หากอุปกรณ์รองรับและยังไม่ได้ติดตั้งแอป
หากคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ระบบจะเปิดลิงก์จากหน้าเว็บแทน
โดยทำได้ด้วยการตั้งค่า handleCodeInApp เป็น true ในออบเจ็กต์ ActionCodeSettings นอกจากนี้ คุณยังต้องระบุชื่อแพ็กเกจ Android หรือรหัสชุดของแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ด้วย URL เว็บสำรองที่ใช้ที่นี่เมื่อไม่มีแอปบนอุปกรณ์เคลื่อนที่พร้อมใช้งานคือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการทางอีเมล ระบบจะจัดเตรียม URL เริ่มต้นไว้ให้สำหรับทุกโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ
วิธีปรับแต่งตัวจัดการการดำเนินการทางอีเมลได้ที่
หัวข้อการปรับแต่งตัวจัดการอีเมล
ในกรณีนี้ ลิงก์แอปบนอุปกรณ์เคลื่อนที่ที่ส่งไปยังผู้ใช้จะเป็นลิงก์ FDL ที่มีเพย์โหลดเป็น URL รหัสการดำเนินการที่กำหนดค่าไว้ในคอนโซล พร้อมพารามิเตอร์การค้นหา oobCode, mode, apiKey และ continueUrl โดยพารามิเตอร์การค้นหา `continueUrl` จะเป็น URL เดิมที่ระบุในออบเจ็กต์ ActionCodeSettings แม้ว่าคุณจะสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปได้โดยไม่ต้องมีทรัพยากร Dependency เพิ่มเติม แต่เราขอแนะนำให้ใช้ไลบรารีของไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ Deep Link ให้คุณ คุณสามารถใช้รหัสการดำเนินการได้
โดยตรงจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ในลักษณะเดียวกับที่จัดการจาก
ขั้นตอนการทำงานบนเว็บที่อธิบายไว้ใน
ส่วนการปรับแต่งตัวจัดการอีเมล
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล คุณต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode จาก Deep Link แล้วใช้รหัสผ่าน applyActionCode เพื่อให้การเปลี่ยนแปลงมีผล เช่น ยืนยันอีเมล