คุณส่งสถานะผ่าน URL ดำเนินการต่อได้เมื่อส่งการดำเนินการทางอีเมลสำหรับการรีเซ็ตรหัสผ่านหรือการยืนยันอีเมลของผู้ใช้ ซึ่งช่วยให้ผู้ใช้กลับไปที่แอปได้หลังจากดำเนินการเสร็จสิ้น นอกจากนี้ คุณยังระบุได้ว่าจะจัดการลิงก์การดำเนินการทางอีเมลจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่โดยตรงเมื่อติดตั้งแอปพลิเคชันแทนหน้าเว็บหรือไม่
ซึ่งจะมีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้
ผู้ใช้ที่ไม่ได้เข้าสู่ระบบในขณะนี้อาจพยายามเข้าถึงเนื้อหาที่ กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ อย่างไรก็ตาม ผู้ใช้อาจลืมรหัสผ่าน จึงทำให้เกิดขั้นตอนการรีเซ็ตรหัสผ่าน เมื่อสิ้นสุดโฟลว์ ผู้ใช้คาดหวังที่จะกลับไปยังส่วนของแอปที่ตนพยายามเข้าถึง
แอปพลิเคชันอาจให้สิทธิ์เข้าถึงเฉพาะบัญชีที่ยืนยันแล้ว ตัวอย่างเช่น แอปจดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนจึงจะสมัครรับข้อมูลได้ ผู้ใช้จะเข้าสู่ขั้นตอนการยืนยันอีเมลและคาดหวัง ว่าจะได้รับการนำกลับไปที่แอปเพื่อทำการสมัครใช้บริการให้เสร็จสมบูรณ์
โดยทั่วไป เมื่อผู้ใช้เริ่มขั้นตอนการรีเซ็ตรหัสผ่านหรือการยืนยันอีเมลในแอปของ Apple ผู้ใช้จะคาดหวังว่าจะทำขั้นตอนให้เสร็จสมบูรณ์ภายในแอป ความสามารถในการส่งต่อสถานะผ่าน URL ดำเนินการต่อจะช่วยให้ทำเช่นนี้ได้
ความสามารถในการส่งสถานะผ่าน URL ดำเนินการต่อเป็นฟีเจอร์ที่มีประสิทธิภาพซึ่ง Firebase Auth มีให้และช่วยปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก
การส่งสถานะของ URL สำหรับดำเนินการต่อในการดำเนินการทางอีเมล
หากต้องการส่ง URL สำหรับดำเนินการต่ออย่างปลอดภัย คุณจะต้อง เพิ่มโดเมนของ URL ลงในรายการที่อนุญาตพิเศษในFirebase Console โดยดำเนินการในส่วนการตรวจสอบสิทธิ์ด้วยการเพิ่มโดเมนนี้ลงใน รายการโดเมนที่ได้รับอนุญาตในแท็บวิธีการลงชื่อเข้าใช้ หากยังไม่มีโดเมนดังกล่าว
ต้องระบุFIRActionCodeSettings
เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน
อินเทอร์เฟซนี้ใช้พารามิเตอร์ต่อไปนี้
Swift
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
URL |
สตริง | ตั้งค่าลิงก์ (สถานะ/URL ดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกัน ในบริบทต่างๆ ดังนี้
|
iOSBundleID |
สตริง | ตั้งค่า Bundle ID ของ iOS เพื่อช่วย Firebase Authentication ระบุว่าควรสร้างลิงก์บนเว็บเท่านั้นหรือลิงก์บนอุปกรณ์เคลื่อนที่ซึ่งเปิดในอุปกรณ์ Apple |
androidPackageName |
สตริง | ตั้งค่าชื่อแพ็กเกจ Android เพื่อช่วย Firebase Authentication ในการพิจารณาว่าควรสร้างลิงก์สำหรับเว็บเท่านั้นหรือลิงก์สำหรับอุปกรณ์เคลื่อนที่ซึ่งเปิดในอุปกรณ์ Android หรือไม่ |
handleCodeInApp |
Bool | ไม่ว่าจะเปิดลิงก์การดำเนินการในอีเมลในแอปบนอุปกรณ์เคลื่อนที่หรือลิงก์เว็บก่อน ค่าเริ่มต้นคือ false เมื่อตั้งค่าเป็น "จริง" ระบบจะส่งลิงก์รหัสการดำเนินการ เป็น Universal Link หรือ App Link ของ Android และแอปจะเปิดลิงก์ หากติดตั้งไว้ ในกรณีที่เป็นเท็จ ระบบจะส่งรหัสไปยัง วิดเจ็ตบนเว็บก่อน จากนั้นเมื่อดำเนินการต่อ ระบบจะเปลี่ยนเส้นทางไปยังแอปหาก ติดตั้งไว้ |
linkDomain |
สตริง | เมื่อกำหนดโดเมนลิงก์การโฮสต์ที่กำหนดเองสำหรับโปรเจ็กต์
ให้ระบุโดเมนที่จะใช้เมื่อแอปบนอุปกรณ์เคลื่อนที่ที่ระบุ
จะเปิดลิงก์ มิฉะนั้น ระบบจะเลือกโดเมนเริ่มต้นโดยอัตโนมัติ (เช่น
PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
สตริง | เลิกใช้งานแล้ว อย่าระบุพารามิเตอร์นี้ |
Objective-C
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
URL |
NSString | ตั้งค่าลิงก์ (สถานะ/URL ดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกัน ในบริบทต่างๆ ดังนี้
|
iOSBundleID |
NSString | ตั้งค่า Bundle ID ของ iOS เพื่อช่วย Firebase Authentication ในการพิจารณาว่า ควรสร้างลิงก์สำหรับเว็บเท่านั้นหรือลิงก์สำหรับอุปกรณ์เคลื่อนที่ซึ่งเปิดในอุปกรณ์ Android หรือ Apple |
androidPackageName |
NSString | ตั้งชื่อแพ็กเกจ Android เพื่อช่วย Firebase Authentication ระบุว่าควรสร้างลิงก์สำหรับเว็บเท่านั้นหรือลิงก์สำหรับอุปกรณ์เคลื่อนที่ซึ่งเปิดในอุปกรณ์ Android หรือ Apple |
handleCodeInApp |
BOOL | ไม่ว่าจะเปิดลิงก์การดำเนินการในอีเมลในแอปบนอุปกรณ์เคลื่อนที่หรือลิงก์เว็บก่อน ค่าเริ่มต้นคือ false เมื่อตั้งค่าเป็น "จริง" ระบบจะส่งลิงก์รหัสการดำเนินการ เป็น Universal Link หรือ App Link ของ Android และแอปจะเปิดลิงก์ หากติดตั้งไว้ ในกรณีที่เป็นเท็จ ระบบจะส่งรหัสไปยัง วิดเจ็ตบนเว็บก่อน จากนั้นเมื่อดำเนินการต่อ ระบบจะเปลี่ยนเส้นทางไปยังแอปหาก ติดตั้งไว้ |
linkDomain |
NSString | เมื่อกำหนดHostingโดเมนลิงก์ที่กำหนดเองสำหรับโปรเจ็กต์
ให้ระบุโดเมนที่จะใช้เมื่อแอปบนอุปกรณ์เคลื่อนที่ที่ระบุ
จะเปิดลิงก์ มิเช่นนั้น ระบบจะเลือกโดเมนเริ่มต้นโดยอัตโนมัติ (เช่น
PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
NSString | เลิกใช้งานแล้ว อย่าระบุพารามิเตอร์นี้ |
ตัวอย่างต่อไปนี้แสดงวิธีส่งลิงก์ยืนยันทางอีเมลที่จะเปิดในแอปบนอุปกรณ์เคลื่อนที่เป็นอันดับแรกโดยใช้โดเมนลิงก์ Hosting ที่กำหนดเอง custom-domain.com
Deep Link จะมีเพย์โหลด URL ของการดำเนินการต่อ
https://www.example.com/?email=user@example.com
Swift
var actionCodeSettings = ActionCodeSettings.init() actionCodeSettings.canHandleInApp = true let user = Auth.auth().currentUser() actionCodeSettings.URL = String(format: "https://www.example.com/?email=%@", user.email) actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier! actionCodeSettings.setAndroidPakageName("com.example.android") // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = "custom-domain.com" user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in if error { // Error occurred. Inspect error.code and handle error. return } // Email verification sent. })
Objective-C
FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init]; actionCodeSettings.handleCodeInApp = YES; FIRUser *user = [FIRAuth auth].currentUser; NSString *urlString = [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email]; actionCodeSettings.URL = [NSURL URLWithString:urlString]; actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier; // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = @"custom-domain.com"; [actionCodeSettings setAndroidPackageName:@"com.example.android"]; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification sent. }];
การกำหนดค่าลิงก์ Firebase Hosting
Firebase Authentication ใช้ Firebase Hosting เมื่อส่งลิงก์ที่ตั้งใจให้เปิดในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์ Hosting ในคอนโซล Firebase
การกำหนดค่าแอปพลิเคชัน Apple
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน คุณจะต้องกำหนดค่าโดเมนลิงก์ Hosting เป็นโดเมนที่เชื่อมโยงในความสามารถของแอปพลิเคชัน
- ดูข้อมูลเพิ่มเติมได้ที่วิธีการรับลิงก์การโฮสต์ iOS
การกำหนดค่าแอปพลิเคชัน Android
- หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android คุณจะต้องระบุชื่อแพ็กเกจของแอปในFirebaseการตั้งค่าโปรเจ็กต์ของคอนโซล นอกจากนี้ คุณต้องระบุ SHA-1 และ SHA-256 ของใบรับรองแอปพลิเคชันด้วย
- นอกจากนี้ คุณยังต้องกำหนดค่าตัวกรอง Intent สำหรับ Deep Link ในไฟล์
AndroidManifest.xml
ด้วย - ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่ วิธีการรับลิงก์การโฮสต์ Android
การจัดการการดำเนินการทางอีเมลในเว็บแอปพลิเคชัน
คุณระบุได้ว่าต้องการจัดการลิงก์รหัสการดำเนินการจากเว็บ
แอปพลิเคชันก่อน แล้วจึงเปลี่ยนเส้นทางไปยังหน้าเว็บหรือแอปพลิเคชันบนอุปกรณ์เคลื่อนที่อื่น
หลังจากดำเนินการสำเร็จหรือไม่ โดยมีเงื่อนไขว่าแอปพลิเคชันบนอุปกรณ์เคลื่อนที่นั้นพร้อมใช้งาน
โดยการตั้งค่า handleCodeInApp
เป็น false
ในออบเจ็กต์
FIRActionCodeSettings
(Obj-C) หรือ ActionCodeSettings
(Swift) แม้ว่า
รหัส Bundle
หรือชื่อแพ็กเกจ Android จะไม่จำเป็น แต่การระบุรหัสหรือชื่อดังกล่าวจะช่วยให้ผู้ใช้
เปลี่ยนเส้นทางกลับไปยังแอปที่ระบุเมื่อดำเนินการรหัสการดำเนินการทางอีเมลเสร็จสมบูรณ์
URL เว็บที่ใช้ที่นี่คือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการทางอีเมล ระบบจะจัดสรรบัญชีเริ่มต้นให้ทุกโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวแฮนเดิลการดำเนินการทางอีเมลได้ที่หัวข้อ การปรับแต่งตัวแฮนเดิลอีเมล
ในกรณีนี้ ลิงก์ภายในพารามิเตอร์การค้นหา continueURL
จะเป็นลิงก์ Hosting ที่มีเพย์โหลดเป็น URL
ที่ระบุในออบเจ็กต์ ActionCodeSettings
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล คุณจะต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode
จาก Deep Link แล้วนำไปใช้ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผล เช่น อีเมลที่จะยืนยัน
การจัดการการดำเนินการทางอีเมลในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่
คุณระบุได้ว่าจะจัดการลิงก์รหัสการดำเนินการภายใน
แอปพลิเคชันบนอุปกรณ์เคลื่อนที่ก่อนหรือไม่ หากมีการติดตั้ง หากมีการคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ระบบจะเปิดลิงก์จากหน้าเว็บแทน โดยการตั้งค่า handleCodeInApp
เป็น true
ในออบเจ็กต์
FIRActionCodeSettings
(Obj-C) หรือ ActionCodeSettings
(Swift) นอกจากนี้ คุณจะต้องระบุชื่อแพ็กเกจ Android หรือรหัสชุดของ
แอปพลิเคชันบนอุปกรณ์เคลื่อนที่ด้วย URL เว็บสำรองที่ใช้ที่นี่เมื่อไม่มีแอปบนอุปกรณ์เคลื่อนที่คือ URL ที่กำหนดค่าไว้ในส่วนเทมเพลตการทำงานของอีเมล ระบบจะจัดสรรค่าเริ่มต้นให้ทุกโปรเจ็กต์
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีปรับแต่งตัวแฮนเดิลการดำเนินการทางอีเมลได้ที่หัวข้อ
การปรับแต่งตัวแฮนเดิลอีเมล
ในกรณีนี้ ลิงก์แอปบนอุปกรณ์เคลื่อนที่ที่ส่งไปยังผู้ใช้จะเป็นลิงก์ Hosting
ซึ่งมีเพย์โหลดเป็น URL ของรหัสการดำเนินการที่กำหนดค่าไว้ใน Console พร้อมพารามิเตอร์การค้นหา oobCode
, mode
, apiKey
และ continueUrl
โดยค่า URL
เดิมจะระบุไว้ในออบเจ็กต์ FIRActionCodeSettings
(Obj-C) หรือ ActionCodeSettings
(Swift) คุณใช้รหัสการดำเนินการได้โดยตรง
จากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ในลักษณะเดียวกับที่จัดการจากขั้นตอนเว็บ
ที่อธิบายไว้ในส่วนการปรับแต่งตัวแฮนเดิลอีเมล
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล คุณจะต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode
จาก Deep Link แล้วนำไปใช้ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผล เช่น อีเมลที่จะยืนยัน