คุณส่งสถานะผ่าน URL ดำเนินการต่อได้เมื่อส่งการดำเนินการทางอีเมลสำหรับการรีเซ็ตรหัสผ่านหรือการยืนยันอีเมลของผู้ใช้ ซึ่งช่วยให้ผู้ใช้กลับไปยังแอปได้หลังจากดำเนินการเสร็จสิ้น นอกจากนี้ คุณยังระบุได้ว่าจะจัดการลิงก์การดำเนินการในอีเมลจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่โดยตรงเมื่อมีการติดตั้งแทนหน้าเว็บหรือไม่
ซึ่งจะมีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้
ผู้ใช้ที่ไม่ได้เข้าสู่ระบบในขณะนี้อาจพยายามเข้าถึงเนื้อหาที่ กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ อย่างไรก็ตาม ผู้ใช้อาจลืมรหัสผ่าน จึงทำให้เกิดขั้นตอนการรีเซ็ตรหัสผ่าน เมื่อสิ้นสุดโฟลว์ ผู้ใช้คาดหวังที่จะกลับไปยังส่วนของแอปที่ตนพยายามเข้าถึง
แอปพลิเคชันอาจให้สิทธิ์เข้าถึงเฉพาะบัญชีที่ยืนยันแล้ว ตัวอย่างเช่น แอปจดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนจึงจะสมัครรับข้อมูลได้ ผู้ใช้จะเข้าสู่ขั้นตอนการยืนยันอีเมลและคาดหวัง ว่าจะได้รับการนำกลับไปที่แอปเพื่อทำการสมัครใช้บริการให้เสร็จสมบูรณ์
โดยทั่วไป เมื่อผู้ใช้เริ่มขั้นตอนการรีเซ็ตรหัสผ่านหรือการยืนยันอีเมลในแอปของ Apple ผู้ใช้จะคาดหวังว่าจะทำขั้นตอนให้เสร็จสมบูรณ์ภายในแอป ความสามารถในการส่งต่อสถานะผ่าน URL ดำเนินการต่อจะช่วยให้ทำเช่นนี้ได้
ความสามารถในการส่งสถานะผ่าน URL ดำเนินการต่อเป็นฟีเจอร์ที่มีประสิทธิภาพซึ่ง Firebase Auth มีให้ และช่วยปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก
การส่งสถานะ/URL สำหรับดำเนินการต่อในการดำเนินการทางอีเมล
หากต้องการส่ง URL สำหรับดำเนินการต่ออย่างปลอดภัย คุณจะต้อง เพิ่มโดเมนของ URL ลงในรายการที่อนุญาตในคอนโซล Firebase โดยดำเนินการในส่วนการตรวจสอบสิทธิ์ด้วยการเพิ่มโดเมนนี้ลงใน รายการโดเมนที่ได้รับอนุญาตในแท็บวิธีการลงชื่อเข้าใช้ หากยังไม่มีโดเมนดังกล่าว
คุณต้องระบุอินสแตนซ์ ActionCodeSettings เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน อินเทอร์เฟซนี้ใช้พารามิเตอร์ต่อไปนี้
| พารามิเตอร์ | ประเภท | คำอธิบาย | |||
|---|---|---|---|---|---|
url |
สตริง | ตั้งค่าลิงก์ (สถานะ/URL ดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกัน ในบริบทต่างๆ ดังนี้
|
|||
iOSBundleId |
สตริง | ตั้งค่ารหัสชุด ซึ่งจะพยายามเปิดลิงก์ในแอปของ Apple หาก ติดตั้งไว้ ต้องลงทะเบียนแอปใน Console หากไม่ได้ระบุ Bundle ID ระบบจะกำหนดค่าของช่องนี้เป็น Bundle ID ของ Bundle หลักของแอป | |||
androidPackageName |
สตริง | ตั้งชื่อแพ็กเกจ Android ซึ่งจะพยายามเปิดลิงก์ใน แอป Android หากมีการติดตั้ง | |||
androidInstallApp |
bool | ระบุว่าจะติดตั้งแอป Android หรือไม่ หากอุปกรณ์รองรับ และยังไม่ได้ติดตั้งแอป หากระบุฟิลด์นี้โดยไม่มี packageName ระบบจะแสดงข้อผิดพลาดที่อธิบายว่าต้องระบุ packageName ร่วมกับฟิลด์นี้ | |||
androidMinimumVersion |
สตริง | เวอร์ชันขั้นต่ำของแอปที่รองรับในขั้นตอนการทำงานนี้ หากระบุ minimumVersion และมีการติดตั้งแอปเวอร์ชันเก่ากว่า ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป แอป Android ต้องลงทะเบียนใน Console | |||
handleCodeInApp |
bool | ไม่ว่าจะเปิดลิงก์การดำเนินการในอีเมลในแอปบนอุปกรณ์เคลื่อนที่หรือลิงก์เว็บก่อน ค่าเริ่มต้นคือ False เมื่อตั้งค่าเป็น "จริง" ระบบจะส่งลิงก์รหัสการดำเนินการ เป็น Universal Link หรือ Android App Link และแอปจะเปิดลิงก์ หากติดตั้งไว้ ในกรณีที่เป็นเท็จ ระบบจะส่งรหัสไปยัง วิดเจ็ตบนเว็บก่อน จากนั้นเมื่อดำเนินการต่อ ระบบจะเปลี่ยนเส้นทางไปยังแอปหาก ติดตั้งไว้ | |||
dynamicLinkDomain |
สตริง | (เลิกใช้งานแล้ว ให้ใช้ `linkDomain`) ตั้งค่าโดเมน (หรือโดเมนย่อย) ของลิงก์แบบไดนามิกที่จะใช้สำหรับลิงก์ปัจจุบัน หากจะเปิดโดยใช้ลิงก์แบบไดนามิกของ Firebase เนื่องจากกำหนดค่าโดเมนลิงก์แบบไดนามิกหลายโดเมนต่อโปรเจ็กต์ได้ ช่องนี้จึงช่วยให้คุณเลือกโดเมนได้อย่างชัดเจน หากไม่ได้ระบุ ระบบจะใช้โดเมนแรก โดยค่าเริ่มต้น | linkDomain |
สตริง | โดเมน Firebase Hosting ที่กำหนดเองซึ่งไม่บังคับเพื่อใช้เมื่อเปิดลิงก์ผ่านแอปบนอุปกรณ์เคลื่อนที่ที่ระบุ คุณต้องกำหนดค่าโดเมนใน Firebase Hosting และโปรเจ็กต์ต้องเป็นเจ้าของโดเมน โดเมนนี้ต้องไม่ใช่โดเมนโฮสติ้งเริ่มต้น (`web.app` หรือ `firebaseapp.com`) การตั้งค่านี้จะแทนที่การตั้งค่า `dynamicLinkDomain` ที่เลิกใช้งานแล้ว |
ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์การยืนยันทางอีเมลที่จะ
เปิดในแอปบนอุปกรณ์เคลื่อนที่เป็นอันดับแรกในรูปแบบของ Firebase Dynamic Links โดยใช้โดเมน Dynamic Link ที่กำหนดเอง 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 และต่ำกว่า คุณจะต้องตั้งค่ารหัสชุดเป็นรูปแบบที่กำหนดเองสำหรับ URL ขาเข้า
- ดูข้อมูลเพิ่มเติมได้ที่ วิธีการรับลิงก์แบบไดนามิกของแพลตฟอร์ม Apple
การจัดการการดำเนินการทางอีเมลในเว็บแอปพลิเคชัน
คุณระบุได้ว่าต้องการจัดการลิงก์รหัสการดำเนินการจากเว็บ
แอปพลิเคชันก่อน แล้วจึงเปลี่ยนเส้นทางไปยังหน้าเว็บหรือแอปพลิเคชันบนอุปกรณ์เคลื่อนที่อื่น
หลังจากดำเนินการสำเร็จหรือไม่ โดยมีเงื่อนไขว่าแอปพลิเคชันบนอุปกรณ์เคลื่อนที่นั้นพร้อมใช้งาน
โดยการตั้งค่า handleCodeInApp เป็น false ในออบเจ็กต์ ActionCodeSettings แม้ว่า
รหัส Bundle
หรือชื่อแพ็กเกจ Android จะไม่จำเป็น แต่การระบุรหัสหรือชื่อดังกล่าวจะช่วยให้ผู้ใช้
เปลี่ยนเส้นทางกลับไปยังแอปที่ระบุเมื่อดำเนินการตามรหัสการดำเนินการทางอีเมลเสร็จสมบูรณ์
URL เว็บที่ใช้ที่นี่คือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการทางอีเมล ระบบจะจัดสรรค่าเริ่มต้นสำหรับทุกโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวแฮนเดิลการดำเนินการทางอีเมลได้ที่หัวข้อ การปรับแต่งตัวแฮนเดิลอีเมล
ในกรณีนี้ ลิงก์ภายในพารามิเตอร์การค้นหา continueURL จะเป็นลิงก์ FDL ที่มีเพย์โหลดเป็น URL ที่ระบุในออบเจ็กต์ ActionCodeSettings
แม้ว่าคุณจะสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปได้โดยไม่ต้องมีทรัพยากร Dependency เพิ่มเติม แต่เราขอแนะนำให้ใช้ไลบรารีของไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ Deep Link ให้คุณ
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล คุณจะต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode จาก Deep Link แล้วนำไปใช้ผ่าน applyActionCode เพื่อให้การเปลี่ยนแปลงมีผล เช่น อีเมลที่จะได้รับการยืนยัน
การจัดการการดำเนินการทางอีเมลในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่
คุณระบุได้ว่าจะจัดการลิงก์รหัสการดำเนินการภายใน
แอปพลิเคชันบนอุปกรณ์เคลื่อนที่ก่อนหรือไม่ หากมีการติดตั้ง นอกจากนี้ คุณยังระบุผ่าน androidInstallApp ได้ด้วยว่า
จะติดตั้งแอปหากอุปกรณ์รองรับและยังไม่ได้ติดตั้ง
แอป
หากคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ระบบจะเปิดลิงก์จากหน้าเว็บแทน
โดยการตั้งค่า handleCodeInApp เป็น true ในออบเจ็กต์ ActionCodeSettings นอกจากนี้ คุณจะต้องระบุชื่อแพ็กเกจ Android หรือรหัส Bundle ของ
แอปพลิเคชันบนอุปกรณ์เคลื่อนที่ด้วย URL ของเว็บสำรองที่ใช้ที่นี่เมื่อไม่มีแอปบนอุปกรณ์เคลื่อนที่คือ
URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการทางอีเมล ระบบจะจัดสรรค่าเริ่มต้นให้ทุกโปรเจ็กต์
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวแฮนเดิลการดำเนินการทางอีเมลได้ที่หัวข้อ
การปรับแต่งตัวแฮนเดิลอีเมล
ในกรณีนี้ ลิงก์แอปบนอุปกรณ์เคลื่อนที่ที่ส่งไปยังผู้ใช้จะเป็นลิงก์ FDL ซึ่งมีเพย์โหลดเป็น URL รหัสการดำเนินการที่กำหนดค่าไว้ในคอนโซล พร้อมพารามิเตอร์การค้นหา oobCode, mode, apiKey และ continueUrl โดยค่าหลังจะเป็น URL เดิมที่ระบุไว้ในออบเจ็กต์ ActionCodeSettings แม้ว่าคุณจะสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปได้โดยไม่ต้องมีทรัพยากร Dependency เพิ่มเติม แต่เราขอแนะนำให้ใช้คลังไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ Deep Link ให้คุณ คุณสามารถใช้รหัสการดำเนินการได้โดยตรงจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ในลักษณะเดียวกับที่จัดการจาก
ขั้นตอนบนเว็บที่อธิบายไว้ในส่วนการปรับแต่งตัวแฮนเดิลอีเมล
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล คุณจะต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode จาก Deep Link แล้วนำไปใช้ผ่าน applyActionCode เพื่อให้การเปลี่ยนแปลงมีผล เช่น อีเมลที่จะได้รับการยืนยัน