คุณสามารถส่งสถานะผ่าน URL ดำเนินการต่อเมื่อส่งการดำเนินการทางอีเมลเพื่อรีเซ็ตรหัสผ่านหรือยืนยันอีเมลของผู้ใช้ สิ่งนี้ทำให้ผู้ใช้สามารถกลับไปที่แอปได้หลังจากดำเนินการเสร็จสิ้น นอกจากนี้คุณสามารถระบุได้ว่าจะจัดการลิงก์การดำเนินการอีเมลโดยตรงจากแอปพลิเคชันมือถือหรือไม่เมื่อติดตั้งแทนที่จะเป็นหน้าเว็บ
สิ่งนี้มีประโยชน์อย่างมากในสถานการณ์ทั่วไปต่อไปนี้:
ผู้ใช้ที่ยังไม่ได้ลงชื่อเข้าใช้อาจพยายามเข้าถึงเนื้อหาที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้อย่างไรก็ตามผู้ใช้อาจลืมรหัสผ่านจึงทริกเกอร์ขั้นตอนการรีเซ็ตรหัสผ่าน ในตอนท้ายของขั้นตอนผู้ใช้คาดว่าจะกลับไปที่ส่วนของแอปที่พยายามเข้าถึง
แอปพลิเคชันสามารถให้การเข้าถึงบัญชีที่ได้รับการยืนยันเท่านั้น ตัวอย่างเช่นจดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนสมัครสมาชิก ผู้ใช้จะดำเนินการตามขั้นตอนการยืนยันอีเมลและคาดว่าจะกลับไปที่แอปเพื่อทำการสมัครให้เสร็จสมบูรณ์
ในกรณีอื่น ๆ ผู้ใช้อาจเริ่มขั้นตอนจากอุปกรณ์เคลื่อนที่และคาดว่าหลังจากการยืนยันจะกลับไปที่แอปบนอุปกรณ์เคลื่อนที่แทนเบราว์เซอร์
การมีความสามารถในการส่งสถานะผ่าน URL ต่อเป็นคุณลักษณะที่มีประสิทธิภาพที่ Firebase Auth มอบให้และสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก
ผ่านสถานะ / URL ต่อในการดำเนินการอีเมล
ในการส่งต่อ URL ต่อไปอย่างปลอดภัยโดเมนสำหรับ URL จะต้องได้รับอนุญาตพิเศษใน คอนโซล Firebase สิ่งนี้ทำได้ในส่วนการ รับรองความถูกต้อง โดยการเพิ่มโดเมนนี้ในรายการ โดเมนที่ได้รับอนุญาต ภายใต้แท็บ วิธีการลงชื่อเข้าใช้ หากยังไม่มีอยู่
ต้องมีอินสแตนซ์ ActionCodeSettings เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน สามารถสร้างด้วยคลาส ActionCodeSettings.Builder ที่ เกี่ยวข้องซึ่งมีวิธีการต่อไปนี้:
วิธี | คำอธิบาย |
---|---|
setUrl(String url) | ตั้งค่าลิงก์ (URL สถานะ / ดำเนินการต่อ) ซึ่งมีความหมายที่แตกต่างกันในบริบทต่างๆ:
|
setIOSBundleId(String iOSBundleId) | ตั้งค่า ID บันเดิลของ iOS เพื่อพยายามเปิดลิงค์ในแอพ iOS ถ้าติดตั้งไว้ ต้องลงทะเบียนแอป iOS ในคอนโซล |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) | ตั้งชื่อแพ็กเกจ Android เพื่อลองเปิดลิงค์ในแอพ android ถ้าติดตั้งไว้ หากตั้งค่า installIfNotAvailable เป็น true จะระบุว่าจะติดตั้งแอป Android หรือไม่หากอุปกรณ์รองรับและยังไม่ได้ติดตั้งแอป หากระบุ MinimumVersion และติดตั้งแอปเวอร์ชันเก่ากว่าผู้ใช้จะถูกนำไปที่ Play Store เพื่ออัปเกรดแอป ต้องลงทะเบียนแอป Android ในคอนโซล |
setHandleCodeInApp(boolean status) | ลิงก์การดำเนินการอีเมลจะเปิดในแอปมือถือหรือลิงก์เว็บก่อน ค่าเริ่มต้นเป็นเท็จ เมื่อตั้งค่าเป็นจริงลิงก์โค้ดการดำเนินการจะถูกส่งเป็น Universal Link หรือ Android App Link และแอปจะเปิดขึ้นหากติดตั้ง ในกรณีที่เป็นเท็จรหัสจะถูกส่งไปยังวิดเจ็ตเว็บก่อนจากนั้นดำเนินการต่อจะเปลี่ยนเส้นทางไปยังแอปหากติดตั้ง |
setDynamicLinkDomain(String dynamicLinkDomain) | ตั้งค่าโดเมนลิงก์แบบไดนามิก (หรือโดเมนย่อย) เพื่อใช้สำหรับลิงก์ปัจจุบันหากต้องการเปิดโดยใช้ลิงก์แบบไดนามิกของ Firebase เนื่องจากสามารถกำหนดค่าโดเมนลิงก์แบบไดนามิกได้หลายรายการต่อโปรเจ็กต์ฟิลด์นี้จึงให้ความสามารถในการเลือกอย่างชัดเจน หากไม่มีการระบุโดเมนแรกจะถูกใช้โดยค่าเริ่มต้น |
ตัวอย่างต่อไปนี้แสดงวิธีการส่งลิงก์ยืนยันอีเมลที่จะเปิดในแอปบนอุปกรณ์เคลื่อนที่ก่อนเป็น Firebase Dynamic Link (แอป iOS com.example.ios
หรือแอป Android com.example.android
) ลิงก์ในรายละเอียดจะมีเพย์โหลด URL ต่อไป https://www.example.com/?email=user@example.com
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); String url = "http://www.example.com/verify?uid=" + user.getUid(); ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build(); user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
โคตรลิน + KTX
val auth = Firebase.auth val user = auth.currentUser!! val url = "http://www.example.com/verify?uid=" + user.uid val actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build() user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
การกำหนดค่าลิงก์แบบไดนามิกของ Firebase
Firebase Auth ใช้ ลิงก์แบบไดนามิกของ Firebase เมื่อส่งลิงก์ที่ตั้งใจจะเปิดในแอปพลิเคชันมือถือ ในการใช้คุณลักษณะนี้จำเป็นต้องกำหนดค่าลิงก์แบบไดนามิกใน Firebase Console
เปิดใช้ลิงก์แบบไดนามิกของ Firebase:
- ใน คอนโซล Firebase เปิดส่วน ลิงก์แบบไดนามิก
หากคุณยังไม่ยอมรับเงื่อนไขลิงก์แบบไดนามิกและสร้างโดเมนลิงก์แบบไดนามิกให้ดำเนินการตอนนี้
หากคุณสร้างโดเมนลิงก์แบบไดนามิกแล้วให้จดบันทึกไว้ โดยทั่วไปโดเมนลิงก์แบบไดนามิกจะมีลักษณะดังตัวอย่างต่อไปนี้:
example.page.link
คุณจะต้องใช้ค่านี้เมื่อกำหนดค่าแอป iOS หรือ Android เพื่อสกัดกั้นลิงก์ขาเข้า
การกำหนดค่าแอปพลิเคชัน Android:
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android ของคุณคุณจะต้องระบุชื่อแพ็กเกจ Android ในการตั้งค่าโครงการ Firebase Console นอกจากนี้จำเป็นต้องมี SHA-1 และ SHA-256 ของใบรับรองการสมัคร
- คุณจะต้องกำหนดค่าตัวกรองความตั้งใจสำหรับลิงก์ในรายละเอียดในไฟล์ AndroidManifest.xml ของคุณ
- สำหรับข้อมูลเพิ่มเติมโปรดดูคำแนะนำการ รับลิงก์แบบไดนามิกของ Android
การกำหนดค่าแอปพลิเคชัน iOS:
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน iOS ของคุณต้องระบุรหัสชุด iOS ในการตั้งค่าโครงการ Firebase Console นอกจากนี้ยังต้องระบุ App Store ID และ Apple Developer Team ID ด้วย
- คุณจะต้องกำหนดค่าโดเมนลิงก์สากล FDL เป็นโดเมนที่เกี่ยวข้องในความสามารถของแอปพลิเคชันของคุณ
- หากคุณวางแผนที่จะเผยแพร่แอปพลิเคชันของคุณไปยัง iOS เวอร์ชัน 8 และต่ำกว่าคุณจะต้องตั้งรหัสชุด iOS ของคุณเป็นรูปแบบที่กำหนดเองสำหรับ URL ขาเข้า
- สำหรับข้อมูลเพิ่มเติมโปรดดูคำแนะนำการ รับลิงก์แบบไดนามิกของ iOS
การจัดการอีเมลในแอปพลิเคชันบนเว็บ
คุณสามารถระบุได้ว่าต้องการจัดการลิงก์โค้ดการดำเนินการจากเว็บแอปพลิเคชันก่อนจากนั้นจึงเปลี่ยนเส้นทางไปยังหน้าเว็บหรือแอปพลิเคชันมือถืออื่นหลังจากดำเนินการเสร็จเรียบร้อยแล้วหากแอปพลิเคชันมือถือพร้อมใช้งาน ทำได้โดยการเรียก setHandleCodeInApp(false)
ในอ็อบเจ็กต์ ActionCodeSettings.Builder แม้ว่าจะไม่จำเป็นต้องใช้รหัสชุด iOS หรือชื่อแพ็กเกจ Android แต่การระบุจะช่วยให้ผู้ใช้สามารถเปลี่ยนเส้นทางกลับไปยังแอปที่ระบุเมื่อกรอกรหัสการดำเนินการทางอีเมล
URL ของเว็บที่ใช้ที่นี่คือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการอีเมล ค่าเริ่มต้นถูกจัดเตรียมไว้สำหรับโปรเจ็กต์ทั้งหมด อ้างถึงการ ปรับแต่งตัวจัดการอีเมล เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวจัดการการดำเนินการอีเมล
ในกรณีนี้ลิงก์ภายในพารามิเตอร์เคียวรี continueUrl
จะเป็นลิงก์ FDL ที่มี payload เป็น URL
ระบุในอ็อบเจ็กต์ ActionCodeSettings
แม้ว่าคุณจะสามารถสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปของคุณได้โดยไม่ต้องพึ่งพาเพิ่มเติม แต่ขอแนะนำให้ใช้ไลบรารีไคลเอนต์ FDL เพื่อแยกวิเคราะห์ลิงก์ในรายละเอียดให้คุณ
เมื่อจัดการการดำเนินการทางอีเมลเช่นการยืนยันอีเมลรหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode
จะต้องถูกแยกวิเคราะห์จากลิงก์ในรายละเอียดจากนั้นจึงนำไปใช้ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผลเช่นอีเมลที่จะได้รับการยืนยัน
การจัดการอีเมลในแอปพลิเคชันมือถือ
คุณสามารถระบุได้ว่าต้องการจัดการลิงก์โค้ดการดำเนินการภายในแอปพลิเคชันมือถือของคุณก่อนหรือไม่หากมีการติดตั้ง ด้วยแอปพลิเคชัน Android คุณยังสามารถระบุผ่านบูลีน installIfNotAvailable
ว่าจะต้องติดตั้งแอปหากอุปกรณ์รองรับและยังไม่ได้ติดตั้ง หากคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับแอปพลิเคชันบนมือถือลิงก์นั้นจะถูกเปิดจากหน้าเว็บแทน ทำได้โดยการเรียก setHandleCodeInApp(true)
ในอ็อบเจ็กต์ ActionCodeSettings.Builder จะต้องระบุชื่อแพ็กเกจ Android หรือรหัสชุด iOS ของแอปพลิเคชันมือถือด้วย
URL เว็บสำรองที่ใช้ที่นี่เมื่อไม่มีแอปบนอุปกรณ์เคลื่อนที่เป็น URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการทางอีเมล ค่าเริ่มต้นถูกจัดเตรียมไว้สำหรับโปรเจ็กต์ทั้งหมด อ้างถึงการ ปรับแต่งตัวจัดการอีเมล เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวจัดการการดำเนินการอีเมล
ในกรณีนี้ลิงก์แอปบนอุปกรณ์เคลื่อนที่ที่ส่งไปยังผู้ใช้จะเป็นลิงก์ FDL ซึ่งมี payload เป็น URL ของโค้ดการดำเนินการซึ่งกำหนดค่าในคอนโซลโดยมีพารามิเตอร์การค้นหา oobCode
, mode
, apiKey
และ continueUrl
ส่วนหลังจะเป็น URL
ดั้งเดิมที่ระบุในอ็อบเจ็กต์ ActionCodeSettings
แม้ว่าคุณจะสามารถสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปของคุณได้โดยไม่ต้องพึ่งพาเพิ่มเติม แต่ขอแนะนำให้ใช้ไลบรารีไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ลิงก์ในรายละเอียดให้คุณ รหัสการดำเนินการสามารถนำไปใช้โดยตรงจากแอปพลิเคชันมือถือซึ่งคล้ายกับวิธีจัดการจากขั้นตอนของเว็บที่อธิบายไว้ในส่วนการ ปรับแต่งเครื่องจัดการอีเมล
เมื่อจัดการการดำเนินการทางอีเมลเช่นการยืนยันอีเมลรหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode
จะต้องถูกแยกวิเคราะห์จากลิงก์ในรายละเอียดจากนั้นจึงนำไปใช้ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผลเช่นอีเมลจะได้รับการยืนยัน