คุณสามารถส่งสถานะผ่าน URL ดำเนินการต่อเมื่อส่งการดำเนินการทางอีเมลเพื่อรีเซ็ตรหัสผ่านหรือยืนยันอีเมลของผู้ใช้ ซึ่งช่วยให้ผู้ใช้สามารถกลับไปที่แอปได้หลังจากดำเนินการเสร็จสิ้น นอกจากนี้ คุณสามารถระบุว่าจะจัดการลิงก์การดำเนินการกับอีเมลโดยตรงจากแอปพลิเคชันมือถือหรือไม่ เมื่อติดตั้งแทนหน้าเว็บ
สิ่งนี้มีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้:
ผู้ใช้ที่ไม่ได้เข้าสู่ระบบอยู่ในขณะนี้อาจพยายามเข้าถึงเนื้อหาที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ อย่างไรก็ตาม ผู้ใช้อาจลืมรหัสผ่านของตน ดังนั้นจึงทำให้เกิดโฟลว์รีเซ็ตรหัสผ่าน เมื่อสิ้นสุดโฟลว์ ผู้ใช้คาดว่าจะกลับไปที่ส่วนของแอปที่พวกเขาพยายามเข้าถึง
แอปพลิเคชันอาจเสนอการเข้าถึงบัญชีที่ยืนยันแล้วเท่านั้น ตัวอย่างเช่น จดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนสมัครรับข้อมูล ผู้ใช้จะต้องผ่านขั้นตอนการยืนยันอีเมลและคาดว่าจะกลับไปที่แอปเพื่อสมัครให้เสร็จสมบูรณ์
ในกรณีอื่นๆ ผู้ใช้อาจเริ่มต้นโฟลว์จากอุปกรณ์เคลื่อนที่ของตน และคาดว่าหลังจากการยืนยันแล้วจะกลับไปที่แอปบนอุปกรณ์เคลื่อนที่แทนที่จะเป็นเบราว์เซอร์
ความสามารถในการส่งผ่านสถานะผ่าน URL ดำเนินการต่อเป็นคุณลักษณะอันทรงพลังที่ Firebase Auth มีให้และสามารถปรับปรุงประสบการณ์ผู้ใช้ได้อย่างมาก
การส่ง URL สถานะ/ดำเนินการต่อในการดำเนินการทางอีเมล
ในการส่ง URL ต่อไปอย่างปลอดภัย จะต้องเพิ่มโดเมนสำหรับ URL นั้นเป็นโดเมนที่ได้รับอนุญาตใน คอนโซล Firebase ทำได้ในส่วนการ รับรองความถูกต้อง โดยเพิ่มโดเมนนี้ลงในรายการ โดเมนที่ได้รับอนุญาต ภายใต้แท็บ วิธีการลงชื่อเข้าใช้ หากยังไม่มี
ต้องระบุอินสแตนซ์ firebase.auth.ActionCodeSettings
เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน อินเทอร์เฟซนี้ใช้พารามิเตอร์ต่อไปนี้:
พารามิเตอร์ | พิมพ์ | คำอธิบาย |
---|---|---|
url | สตริง | ตั้งค่าลิงก์ (สถานะ/ดำเนินการต่อ URL) ซึ่งมีความหมายต่างกันในบริบทต่างๆ:
|
iOS | ({bundleId: string}|ไม่ได้กำหนด) | ตั้งค่า ID บันเดิล iOS การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป iOS หากมีการติดตั้งไว้ แอป iOS จะต้องลงทะเบียนในคอนโซล |
android | ({ชื่อแพ็คเกจ: สตริง, installApp:boolean|ไม่ได้กำหนด, เวอร์ชันขั้นต่ำ: สตริง|ไม่ได้กำหนด}|ไม่ได้กำหนด) | ตั้งชื่อแพ็คเกจ Android การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป Android หากมีการติดตั้งไว้ หากผ่าน installApp จะระบุว่าจะติดตั้งแอป Android หรือไม่หากอุปกรณ์รองรับและยังไม่ได้ติดตั้งแอป หากระบุฟิลด์นี้โดยไม่มี packageName จะเกิดข้อผิดพลาดที่อธิบายว่าต้องระบุ packageName ร่วมกับฟิลด์นี้ minimumVersion มีการระบุเวอร์ชันขั้นต่ำ และติดตั้งแอปเวอร์ชันเก่ากว่า ระบบจะนำผู้ใช้ไปที่ Play Store เพื่ออัปเกรดแอป ต้องลงทะเบียนแอป Android ในคอนโซล |
handleCodeInApp | (บูลีน|ไม่ได้กำหนด) | จะเปิดลิงก์การดำเนินการอีเมลในแอปบนอุปกรณ์เคลื่อนที่หรือเว็บลิงก์ก่อน ค่าดีฟอลต์เป็นเท็จ เมื่อตั้งค่าเป็นจริง ลิงก์รหัสการดำเนินการจะถูกส่งเป็น Universal Link หรือ Android App Link และจะเปิดโดยแอปหากมีการติดตั้ง ในกรณีที่เป็นเท็จ รหัสจะถูกส่งไปยังเว็บวิดเจ็ตก่อน จากนั้นดำเนินการต่อ จะเปลี่ยนเส้นทางไปยังแอปหากติดตั้ง |
dynamicLinkDomain | (สตริง|ไม่ได้กำหนด) | ตั้งค่าโดเมนลิงก์แบบไดนามิก (หรือโดเมนย่อย) เพื่อใช้สำหรับลิงก์ปัจจุบัน หากจะเปิดโดยใช้ลิงก์แบบไดนามิกของ Firebase เนื่องจากสามารถกำหนดค่าโดเมนลิงก์แบบไดนามิกได้หลายโดเมนต่อโปรเจ็กต์ ฟิลด์นี้จึงให้ความสามารถในการเลือกอย่างชัดแจ้ง หากไม่ได้ระบุไว้ โดเมนแรกจะถูกใช้เป็นค่าเริ่มต้น |
ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์ยืนยันอีเมลที่จะเปิดในแอปบนอุปกรณ์เคลื่อนที่ก่อนเป็น 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 = {
url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
iOS: {
bundleId: 'com.example.ios'
},
android: {
packageName: 'com.example.android',
installApp: true,
minimumVersion: '12'
},
handleCodeInApp: true,
// When multiple custom dynamic link domains are defined, specify which
// one to use.
dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
.then(function() {
// Verification email sent.
})
.catch(function(error) {
// Error occurred. Inspect error.code.
});
การกำหนดค่าลิงก์ไดนามิกของ Firebase
Firebase Auth ใช้ Firebase Dynamic Links เมื่อส่งลิงก์ที่ต้องการเปิดในแอปพลิเคชันมือถือ หากต้องการใช้ฟีเจอร์นี้ ลิงก์แบบไดนามิกต้องได้รับการกำหนดค่าในคอนโซล Firebase
เปิดใช้ลิงก์ไดนามิกของ Firebase:
- ใน คอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก
หากคุณยังไม่ได้ยอมรับข้อกำหนดของ Dynamic Links และสร้างโดเมน Dynamic Links ให้ดำเนินการทันที
หากคุณสร้างโดเมนลิงก์แบบไดนามิกแล้ว โปรดจดบันทึกไว้ โดยทั่วไปแล้วโดเมนลิงก์แบบไดนามิกจะมีลักษณะดังนี้:
example.page.link
คุณจะต้องใช้ค่านี้เมื่อคุณกำหนดค่าแอป Apple หรือ Android เพื่อสกัดกั้นลิงก์ขาเข้า
การกำหนดค่าแอปพลิเคชัน Android:
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android คุณต้องระบุชื่อแพ็กเกจ Android ในการตั้งค่าโปรเจ็กต์คอนโซล Firebase นอกจากนี้ จำเป็นต้องมี SHA-1 และ SHA-256 ของใบรับรองการสมัคร
- คุณจะต้องกำหนดค่าตัวกรองความตั้งใจสำหรับลิงก์ในรายละเอียดในไฟล์
AndroidManifest.xml
- สำหรับข้อมูลเพิ่มเติม โปรดดูคำแนะนำในการ รับ Android Dynamic Links
การกำหนดค่าแอปพลิเคชัน iOS:
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน iOS คุณต้องระบุรหัสบันเดิล iOS ในการตั้งค่าโปรเจ็กต์คอนโซล Firebase นอกจากนี้ จำเป็นต้องระบุ ID ของ App Store และ Apple Developer Team ID ด้วย
- คุณจะต้องกำหนดค่าโดเมนลิงก์สากล FDL เป็นโดเมนที่เกี่ยวข้องในความสามารถของแอปพลิเคชันของคุณ
- หากคุณวางแผนที่จะเผยแพร่แอปพลิเคชันของคุณไปยัง iOS เวอร์ชัน 8 หรือต่ำกว่า คุณจะต้องตั้งค่ารหัสบันเดิล iOS ของคุณเป็นแบบแผนที่กำหนดเองสำหรับ URL ขาเข้า
- สำหรับข้อมูลเพิ่มเติม โปรดดูคำแนะนำในการ รับ iOS Dynamic Links
จัดการการดำเนินการทางอีเมลในเว็บแอปพลิเคชัน
คุณสามารถระบุได้ว่าคุณต้องการจัดการลิงก์โค้ดการดำเนินการจากเว็บแอปพลิเคชันก่อน จากนั้นจึงเปลี่ยนเส้นทางไปยังหน้าเว็บหรือแอปพลิเคชันมือถืออื่นหลังจากทำสำเร็จ โดยต้องมีแอปพลิเคชันมือถือพร้อมใช้งาน สิ่งนี้ทำได้โดยการตั้งค่า handleCodeInApp
false
ในอ็อบเจ็กต์ firebase.auth.ActionCodeSettings
แม้ว่ารหัสบันเดิลของ iOS หรือชื่อแพ็กเกจของ Android จะไม่จำเป็น แต่การระบุรหัสเหล่านี้จะทำให้ผู้ใช้เปลี่ยนเส้นทางกลับไปยังแอปที่ระบุเมื่อรหัสการดำเนินการทางอีเมลเสร็จสิ้น
URL ของเว็บที่ใช้ที่นี่ เป็น URL ที่กำหนดค่าในส่วนเทมเพลตการดำเนินการอีเมล มีการเตรียมใช้งานค่าเริ่มต้นสำหรับทุกโครงการ โปรดดูที่การ ปรับแต่งตัวจัดการอีเมล เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวจัดการการดำเนินการอีเมล
ในกรณีนี้ ลิงก์ภายในพารามิเตอร์เคียวรี continueUrl
จะเป็นลิงก์ FDL ที่มีเพย์โหลดเป็น URL
ที่ระบุในอ็อบเจ็กต์ ActionCodeSettings
แม้ว่าคุณจะสามารถสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปของคุณได้โดยไม่ต้องพึ่งพาเพิ่มเติม แต่เราขอแนะนำให้ใช้ไลบรารีไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ลิงก์ในรายละเอียดสำหรับคุณ
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล โค้ดการดำเนินการจากพารามิเตอร์การค้นหา oobCode
จะต้องแยกวิเคราะห์จากลิงก์ในรายละเอียด จากนั้นนำไปใช้ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผล กล่าวคือ อีเมลต้องได้รับการยืนยัน
จัดการการดำเนินการทางอีเมลในแอปพลิเคชันมือถือ
คุณสามารถระบุได้ว่าคุณต้องการจัดการลิงก์โค้ดการดำเนินการภายในแอปพลิเคชันบนมือถือของคุณก่อนหรือไม่ โดยต้องติดตั้งไว้ ด้วยแอปพลิเคชัน Android คุณยังสามารถระบุผ่าน android.installApp
ว่าจะติดตั้งแอปหากอุปกรณ์รองรับและยังไม่ได้ติดตั้ง หากมีการคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับแอปพลิเคชันบนมือถือ ลิงก์นั้นจะถูกเปิดจากหน้าเว็บแทน ซึ่งทำได้โดยการตั้งค่า handleCodeInApp
true
ในอ็อบเจ็กต์ firebase.auth.ActionCodeSettings
จะต้องระบุชื่อแพ็กเกจ Android ของแอปพลิเคชันมือถือหรือ iOS Bundle ID ด้วย
URL ของเว็บทางเลือกที่ใช้ที่นี่ เมื่อไม่มีแอปบนอุปกรณ์เคลื่อนที่คือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการกับอีเมล มีการเตรียมใช้งานค่าเริ่มต้นสำหรับทุกโครงการ โปรดดูที่การ ปรับแต่งตัวจัดการอีเมล เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวจัดการการดำเนินการอีเมล
ในกรณีนี้ ลิงก์แอปบนอุปกรณ์เคลื่อนที่ที่ส่งไปยังผู้ใช้จะเป็นลิงก์ FDL ซึ่งเพย์โหลดคือ URL โค้ดการดำเนินการ ซึ่งกำหนดค่าใน Console ด้วยพารามิเตอร์การค้นหา oobCode
, mode
, apiKey
และ continueUrl
ส่วนหลังจะเป็น URL
ดั้งเดิมที่ระบุในวัตถุ ActionCodeSettings
แม้ว่าคุณจะสามารถสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปของคุณได้โดยไม่ต้องพึ่งพาเพิ่มเติม แต่เราขอแนะนำให้ใช้ไลบรารีไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ลิงก์ในรายละเอียดสำหรับคุณ สามารถใช้รหัสการดำเนินการได้โดยตรงจากแอปพลิเคชันมือถือ คล้ายกับวิธีจัดการจากเว็บโฟลว์ที่อธิบายไว้ในส่วนการ ปรับแต่งตัวจัดการอีเมล
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล โค้ดการดำเนินการจากพารามิเตอร์การค้นหา oobCode
จะต้องแยกวิเคราะห์จากลิงก์ในรายละเอียด จากนั้นนำไปใช้ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผล กล่าวคือ อีเมลต้องได้รับการยืนยัน