คุณสามารถส่งต่อสถานะผ่าน URL สำหรับดำเนินการต่อเมื่อส่งการดำเนินการทางอีเมลเพื่อรีเซ็ตรหัสผ่านหรือยืนยันอีเมลของผู้ใช้ ซึ่งจะช่วยให้ผู้ใช้กลับไปที่แอปได้หลังจากดำเนินการเสร็จแล้ว นอกจากนี้ คุณยังระบุได้ว่าจะจัดการลิงก์การดำเนินการทางอีเมลจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่โดยตรงเมื่อมีการติดตั้งแทนที่จะจัดการจากหน้าเว็บ
ฟีเจอร์นี้มีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้
ผู้ใช้ที่ไม่ได้เข้าสู่ระบบอาจพยายามเข้าถึงเนื้อหาที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ อย่างไรก็ตาม ผู้ใช้อาจลืมรหัสผ่านและทำให้เกิดขั้นตอนการรีเซ็ตรหัสผ่าน เมื่อสิ้นสุดขั้นตอน ผู้ใช้คาดหวังว่าจะกลับไปที่ส่วนของแอปที่พยายามเข้าถึง
แอปพลิเคชันอาจอนุญาตให้เข้าถึงได้เฉพาะบัญชีที่ยืนยันแล้ว ตัวอย่างเช่น จดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนสมัครรับข้อมูล ผู้ใช้จะทำตามขั้นตอนการยืนยันอีเมลและคาดหวังว่าจะกลับไปที่แอปเพื่อสมัครรับข้อมูลให้เสร็จสมบูรณ์
ในกรณีอื่นๆ ผู้ใช้อาจเริ่มขั้นตอนจากอุปกรณ์เคลื่อนที่และคาดหวังว่าจะกลับไปที่แอปบนอุปกรณ์เคลื่อนที่แทนเบราว์เซอร์หลังจากยืนยันแล้ว
ความสามารถในการส่งต่อสถานะผ่าน URL สำหรับดำเนินการต่อเป็นฟีเจอร์ที่มีประสิทธิภาพซึ่ง Firebase การตรวจสอบสิทธิ์ มีให้และสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก
การส่งต่อสถานะของ URL สำหรับดำเนินการต่อในการดำเนินการทางอีเมล
หากต้องการส่งต่อ URL สำหรับดำเนินการต่ออย่างปลอดภัย คุณต้องเพิ่มโดเมนสำหรับ URL เป็นโดเมนที่ได้รับอนุญาตโดยทำดังนี้
ในคอนโซลFirebase ให้ไปที่แท็บ ความปลอดภัย > การตรวจสอบสิทธิ์ > การตั้งค่า
ในส่วนโดเมนที่ได้รับอนุญาต ให้คลิกเพิ่มโดเมน แล้วเพิ่ม URL
คุณต้องระบุอินสแตนซ์ ActionCodeSettings เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรือ อีเมลยืนยัน โดยสามารถสร้างได้ด้วยคลาส ActionCodeSettings.Builder ที่เชื่อมโยงกัน ซึ่งมีเมธอดต่อไปนี้
| เมธอด | คำอธิบาย |
|---|---|
setUrl(String url) |
ตั้งค่าลิงก์ (สถานะ/URL สำหรับดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกัน ในบริบทต่างๆ ดังนี้
|
setIOSBundleId(String iOSBundleId) |
ตั้งค่ารหัสชุด iOS เพื่อช่วยให้ Firebase Authentication ระบุได้ว่า ควรสร้างลิงก์บนเว็บเท่านั้นหรือลิงก์สำหรับมือถือซึ่งจะเปิดในอุปกรณ์ Apple |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
ตั้งค่าชื่อแพ็กเกจ Android เพื่อช่วยให้ Firebase Authentication ระบุได้ว่าจะสร้างลิงก์บนเว็บเท่านั้นหรือลิงก์สำหรับมือถือซึ่งจะเปิดในอุปกรณ์ Android |
setHandleCodeInApp(boolean status) |
ระบุว่าจะเปิดลิงก์การดำเนินการทางอีเมลในแอปบนอุปกรณ์เคลื่อนที่หรือลิงก์บนเว็บ ก่อน ระบบตั้งค่าเริ่มต้นไว้เป็น "เท็จ" เมื่อตั้งค่าเป็น "จริง" ระบบจะส่งลิงก์รหัสการดำเนินการ เป็น Universal Link หรือ Android App Link และแอปจะเปิดลิงก์ดังกล่าว หากมีการติดตั้ง ในกรณีที่ตั้งค่าเป็น "เท็จ" ระบบจะส่งรหัสไปยัง วิดเจ็ตบนเว็บก่อน จากนั้นเมื่อดำเนินการต่อ ระบบจะเปลี่ยนเส้นทางไปยังแอปหากมีการติดตั้ง |
setLinkDomain(String customDomain) |
เมื่อมีการกำหนดโดเมนลิงก์ที่กำหนดเองสำหรับโปรเจ็กต์ ให้ระบุโดเมนที่จะใช้เมื่อแอปบนอุปกรณ์เคลื่อนที่ที่ระบุจะเปิดลิงก์ มิเช่นนั้นระบบจะเลือกโดเมนเริ่มต้นโดยอัตโนมัติ (เช่น PROJECT_ID.firebaseapp.com |
setDynamicLinkDomain(String dynamicLinkDomain) |
เลิกใช้งานแล้ว อย่าระบุพารามิเตอร์นี้ |
ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์สำหรับการยืนยันทางอีเมลที่จะเปิดในแอปบนอุปกรณ์เคลื่อนที่เป็นอันดับแรก Deep Link จะมีเพย์โหลด URL สำหรับดำเนินการต่อ http://www.example.com/verify?uid=1234
Kotlin
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.") } }
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."); } } });
การกำหนดค่าลิงก์โฮสติ้งของ Firebase
Firebase Authentication ใช้ Firebase Hosting เมื่อส่ง ลิงก์ที่ต้องการให้เปิดในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์โฮสติ้งในคอนโซลFirebase
การกำหนดค่าแอปพลิเคชัน Android
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android คุณต้องระบุชื่อแพ็กเกจของแอปในFirebaseคอนโซล การตั้งค่าโปรเจ็กต์ นอกจากนี้ คุณต้องระบุ SHA-1 และ SHA-256 ของใบรับรองแอปพลิเคชันด้วย
- นอกจากนี้ คุณยังต้องกำหนดค่าตัวกรอง Intent สำหรับ Deep Link ในไฟล์
AndroidManifest.xml - ดูข้อมูลเพิ่มเติมได้ที่ วิธีการรับลิงก์โฮสติ้งของ Android
การกำหนดค่าแอปพลิเคชัน iOS
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน iOS คุณจะต้อง กำหนดค่าโดเมนลิงก์ Hosting เป็นโดเมนที่เชื่อมโยงใน ความสามารถของแอปพลิเคชัน
- ดูข้อมูลเพิ่มเติมได้ที่ วิธีการรับลิงก์โฮสติ้งของ iOS
การจัดการการดำเนินการทางอีเมลในเว็บแอปพลิเคชัน
คุณสามารถระบุได้ว่าจะจัดการลิงก์รหัสการดำเนินการจากเว็บแอปพลิเคชันก่อน แล้วเปลี่ยนเส้นทางไปยังหน้าเว็บหรือแอปพลิเคชันบนอุปกรณ์เคลื่อนที่อื่นหลังจากดำเนินการเสร็จสมบูรณ์ หากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่พร้อมใช้งาน
โดยทำได้ด้วยการเรียก setHandleCodeInApp(false) ใน
ออบเจ็กต์ ActionCodeSettings.Builder
แม้ว่าระบบจะไม่กำหนดให้ระบุรหัสชุด iOS หรือชื่อแพ็กเกจ Android แต่การระบุข้อมูลดังกล่าวจะช่วยให้ผู้ใช้เปลี่ยนเส้นทางกลับไปยังแอปที่ระบุเมื่อรหัสการดำเนินการทางอีเมลเสร็จสมบูรณ์
URL บนเว็บที่ใช้ที่นี่คือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการทางอีเมล ระบบจะจัดเตรียม URL เริ่มต้นไว้สำหรับทุกโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ วิธีปรับแต่งเครื่องจัดการอีเมลได้ที่ หัวข้อการปรับแต่งเครื่องจัดการการดำเนินการทางอีเมล
ในกรณีนี้ ลิงก์ภายในพารามิเตอร์การค้นหา continueUrl จะเป็น
ลิงก์ Hosting ที่มีเพย์โหลดเป็น URL ที่ระบุใน
ออบเจ็กต์ ActionCodeSettings
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล คุณต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode จาก Deep Link แล้วใช้ผ่าน applyActionCode เพื่อให้การเปลี่ยนแปลงมีผล เช่น ยืนยันอีเมล
การจัดการการดำเนินการทางอีเมลในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่
คุณสามารถระบุได้ว่าจะจัดการลิงก์รหัสการดำเนินการภายในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ก่อนหรือไม่ หากมีการติดตั้ง หากมีการคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ระบบจะเปิดลิงก์จากหน้าเว็บแทน โดยทำได้ด้วยการเรียก setHandleCodeInApp(true) ใน
ออบเจ็กต์
ActionCodeSettings.Builder
นอกจากนี้ คุณต้องระบุชื่อแพ็กเกจ Android หรือรหัสชุด iOS ของแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ด้วย
URL บนเว็บสำรองที่ใช้ที่นี่เมื่อไม่มีแอปบนอุปกรณ์เคลื่อนที่พร้อมใช้งานคือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการทางอีเมล ระบบจะจัดเตรียม URL เริ่มต้นไว้สำหรับทุกโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ วิธีปรับแต่งเครื่องจัดการอีเมลได้ที่ หัวข้อการปรับแต่งเครื่องจัดการการดำเนินการทางอีเมล
ในกรณีนี้ ลิงก์แอปบนอุปกรณ์เคลื่อนที่ที่ส่งไปยังผู้ใช้จะเป็นลิงก์ Hosting ที่มีเพย์โหลดเป็น URL รหัสการดำเนินการที่กำหนดค่าไว้ในคอนโซล พร้อมพารามิเตอร์การค้นหา oobCode, mode, apiKey และ continueUrl โดยพารามิเตอร์การค้นหา `continueUrl` จะเป็น URL เดิมที่ระบุในออบเจ็กต์ ActionCodeSettings คุณสามารถใช้รหัสการดำเนินการได้
โดยตรงจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ในลักษณะเดียวกับที่จัดการจาก
ขั้นตอนบนเว็บที่อธิบายไว้ใน
ส่วนการปรับแต่งเครื่องจัดการอีเมล
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล คุณต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode จาก Deep Link แล้วใช้ผ่าน applyActionCode เพื่อให้การเปลี่ยนแปลงมีผล เช่น ยืนยันอีเมล