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