คุณส่งสถานะผ่าน URL ดำเนินการต่อได้เมื่อส่งการดำเนินการทางอีเมลเพื่อขอรหัสผ่าน รีเซ็ตหรือยืนยันอีเมลของผู้ใช้ ซึ่งทำให้ผู้ใช้สามารถ กลับไปยังแอปหลังการดำเนินการเสร็จสิ้น นอกจากนี้ คุณสามารถระบุ จะจัดการลิงก์การดำเนินการกับอีเมลโดยตรงจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่หรือไม่ในเมื่อ แทนที่จะเป็นหน้าเว็บ
ซึ่งจะมีประโยชน์อย่างยิ่งในสถานการณ์ทั่วไปต่อไปนี้
ผู้ใช้ที่ไม่ได้ลงชื่อเข้าสู่ระบบอยู่ในขณะนี้ อาจพยายามเข้าถึงเนื้อหาที่ กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ อย่างไรก็ตาม ผู้ใช้อาจลืมรหัสผ่าน จึงทริกเกอร์ขั้นตอนการรีเซ็ตรหัสผ่าน ในตอนท้ายของ ผู้ใช้ต้องการกลับไปที่ส่วนของแอปที่ตนอยู่ พยายามเข้าถึง
แอปพลิเคชันอาจเสนอการเข้าถึงบัญชีที่ได้รับการยืนยันแล้วเท่านั้น สำหรับ เช่น แอปจดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อน การสมัครใช้บริการ ผู้ใช้จะต้องทำตามขั้นตอนการยืนยันอีเมลและคาดว่าระบบจะนํากลับไปยังแอปเพื่อให้สมัครใช้บริการให้เสร็จสมบูรณ์
โดยทั่วไป เมื่อผู้ใช้เริ่มรีเซ็ตรหัสผ่านหรือขั้นตอนการยืนยันอีเมล แอป Apple ที่คาดหวังว่าจะดำเนินขั้นตอนให้เสร็จสมบูรณ์ภายในแอป ความสามารถในการ สถานะ Pass ผ่านทาง URL ดำเนินการต่อจะช่วยให้การดำเนินการนี้เป็นไปได้
ความสามารถในการส่งสถานะผ่าน URL ดำเนินการต่อเป็นฟีเจอร์ที่มีประสิทธิภาพที่ Firebase Auth ให้บริการและช่วยปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก
การส่งสถานะ/URL ดำเนินการต่อในการดําเนินการทางอีเมล
ในการส่ง URL ต่อไปอย่างปลอดภัย โดเมนของ URL จะต้อง อยู่ในรายการที่อนุญาตพิเศษในคอนโซล Firebase ซึ่งทำได้ในส่วนการตรวจสอบสิทธิ์โดยการเพิ่มโดเมนนี้ลงในรายการโดเมนที่ได้รับอนุญาตในแท็บวิธีการลงชื่อเข้าใช้ หากยังไม่มี
ต้องระบุอินสแตนซ์ FIRActionCodeSettings
เมื่อส่ง
อีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน อินเทอร์เฟซนี้ใช้พารามิเตอร์ต่อไปนี้
Swift
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
URL |
สตริง | ตั้งค่าลิงก์ (URL สถานะ/ดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกันในบริบทต่างๆ ดังนี้
|
iOSBundleID |
สตริง | ตั้งค่ารหัสชุด การดำเนินการนี้จะพยายามเปิดลิงก์ในแอป Apple หาก ติดตั้งแล้ว ต้องลงทะเบียนแอปในคอนโซล หากไม่ใช่ มีการระบุรหัสชุด ค่าของช่องนี้กำหนดเป็นรหัสชุด Bundle หลักของแอป |
androidPackageName |
สตริง | ตั้งชื่อแพ็กเกจ Android การดำเนินการนี้จะพยายามเปิดลิงก์ใน แอป Android ถ้าติดตั้งไว้ |
androidInstallIfNotAvailable |
Bool | ระบุว่าจะติดตั้งแอป Android หากอุปกรณ์รองรับหรือไม่ และแอปยังไม่ได้ติดตั้ง หากระบุช่องนี้โดยไม่มี packageName ระบบจะแสดงข้อผิดพลาดที่อธิบายว่าต้องระบุ packageName ควบคู่ไปกับช่องนี้ |
androidMinimumVersion |
สตริง | เวอร์ชันต่ำสุดของแอปที่รองรับในขั้นตอนนี้ ถ้า ขั้นต่ำเวอร์ชันที่ระบุไว้ และติดตั้งแอปเวอร์ชันเก่าแล้ว ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป แอป Android ต้องลงทะเบียนในคอนโซล |
handleCodeInApp |
Bool | ลิงก์การดำเนินการกับอีเมลจะเปิดขึ้นในแอปบนอุปกรณ์เคลื่อนที่หรือบนเว็บ ลิงก์ก่อน ค่าเริ่มต้นคือ False เมื่อตั้งค่าเป็น "จริง" ลิงก์โค้ดการกระทำ ระบบจะส่งเป็น Universal Link หรือ Android App Link และจะเปิดขึ้น ของแอปหากติดตั้งไว้ ในกรณีที่เป็นเท็จ โค้ดจะถูกส่งไปยัง วิดเจ็ตเว็บก่อนแล้วจึงดำเนินการต่อจะเปลี่ยนเส้นทางไปยังแอปหาก ติดตั้งไว้แล้ว |
dynamicLinkDomain |
สตริง | ตั้งค่าโดเมนลิงก์แบบไดนามิก (หรือโดเมนย่อย) ที่จะใช้สำหรับลิงก์ปัจจุบัน หากจะเปิดโดยใช้ลิงก์แบบไดนามิกของ Firebase เนื่องจากคุณกําหนดค่าโดเมนลิงก์แบบไดนามิกหลายรายการต่อโปรเจ็กต์ได้ ช่องนี้จึงช่วยให้คุณเลือกโดเมนได้อย่างชัดเจน หากไม่ได้ระบุ ระบบจะใช้โดเมนแรกโดยค่าเริ่มต้น |
Objective-C
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
URL |
NSString | ตั้งค่าลิงก์ (URL สถานะ/ดำเนินการต่อ) ซึ่งมีความหมายแตกต่างกันในบริบทต่างๆ ดังนี้
|
iOSBundleID |
สตริง NS | ตั้งค่ารหัสชุด ซึ่งจะพยายามเปิดลิงก์ในแอปของ Apple หากติดตั้งไว้ แอปต้องได้รับการลงทะเบียนในคอนโซล |
androidPackageName |
NSString | ตั้งชื่อแพ็กเกจ Android ซึ่งจะพยายามเปิดลิงก์ในแอป Android หากติดตั้งไว้ |
androidInstallIfNotAvailable |
BOOL | ระบุว่าจะติดตั้งแอป Android หรือไม่หากอุปกรณ์รองรับและยังไม่ได้ติดตั้งแอป หากฟิลด์นี้ไม่มี แพ็กเกจName มีข้อผิดพลาดเกิดขึ้นเนื่องจากอธิบายว่าชื่อแพ็กเกจต้องเป็น ที่ให้ไว้พร้อมกับฟิลด์นี้ |
androidMinimumVersion |
สตริง NS | เวอร์ชันต่ำสุดของแอปที่รองรับในขั้นตอนนี้ ถ้า ขั้นต่ำเวอร์ชันที่ระบุไว้ และติดตั้งแอปเวอร์ชันเก่าแล้ว ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป แอป Android ต้องลงทะเบียนในคอนโซล |
handleCodeInApp |
บูลีน | ระบุว่าลิงก์การดําเนินการของอีเมลจะเปิดในแอปบนอุปกรณ์เคลื่อนที่หรือลิงก์เว็บก่อน ระบบตั้งค่าเริ่มต้นไว้เป็น "เท็จ" เมื่อตั้งค่าเป็น "จริง" ลิงก์โค้ดการกระทำ ระบบจะส่งเป็น Universal Link หรือ Android App Link และจะเปิดขึ้น ตามแอปที่ติดตั้งไว้ ในกรณีที่เป็นเท็จ โค้ดจะถูกส่งไปยัง วิดเจ็ตเว็บก่อนแล้วจึงดำเนินการต่อจะเปลี่ยนเส้นทางไปยังแอปหาก ติดตั้งไว้แล้ว |
dynamicLinkDomain |
NSString | ตั้งค่าโดเมนลิงก์แบบไดนามิก (หรือโดเมนย่อย) ที่จะใช้กับลิงก์ปัจจุบัน หากต้องการเปิดลิงก์โดยใช้ Firebase Dynamic Links เนื่องจากคุณกําหนดค่าโดเมนลิงก์แบบไดนามิกหลายรายการต่อโปรเจ็กต์ได้ ช่องนี้จึงช่วยให้คุณเลือกโดเมนได้อย่างชัดเจน หากไม่ได้ระบุไว้ โดเมนแรก โดยค่าเริ่มต้น |
ตัวอย่างต่อไปนี้จะแสดงวิธีส่งลิงก์สำหรับการยืนยันอีเมลที่
จะเปิดในแอปบนอุปกรณ์เคลื่อนที่ก่อนเป็นลิงก์แบบไดนามิกของ Firebase โดยใช้
โดเมนลิงก์แบบไดนามิก example.page.link
(แอป iOS com.example.ios
หรือแอป Android com.example.android
ซึ่งแอป
จะติดตั้งหากยังไม่ได้ติดตั้ง และเวอร์ชันขั้นต่ำคือ 12
)
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", installIfNotAvailable:true, minimumVersion:"12") // When multiple custom dynamic link domains are defined, specify which one to use. actionCodeSettings.dynamicLinkDomain = "example.page.link" 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; // When multiple custom dynamic link domains are defined, specify which one to use. actionCodeSettings.dynamicLinkDomain = @"example.page.link"; [actionCodeSettings setAndroidPackageName:@"com.example.android" installIfNotAvailable:YES minimumVersion:'12']; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification sent. }];
การกำหนดค่าลิงก์แบบไดนามิกของ Firebase
Firebase Auth ใช้ Firebase Dynamic Links เมื่อส่งลิงก์ที่มีไว้เพื่อเปิดในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์แบบไดนามิกในคอนโซล Firebase
เปิดใช้ลิงก์แบบไดนามิกของ Firebase:
- เปิดส่วน Dynamic Links ในคอนโซล Firebase
-
หากคุณยังไม่ได้ยอมรับข้อกำหนด Dynamic Links และสร้าง Dynamic Links โดเมน ให้ดำเนินการในขณะนี้
หากคุณสร้างโดเมน Dynamic Links ไว้แล้ว โปรดจดบันทึกไว้ Dynamic Links โดเมนมักจะมีลักษณะดังตัวอย่างต่อไปนี้
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
ในออบเจ็กต์ FIRActionCodeSettings
(Obj-C) หรือ ActionCodeSettings
(Swift) ขณะที่
รหัสชุด
หรือชื่อแพ็กเกจ Android หรือไม่ก็ได้ การให้
ชื่อจะทำให้ผู้ใช้
เพื่อเปลี่ยนเส้นทางกลับไปยังแอปที่ระบุเมื่อกรอกรหัสการดำเนินการกับอีเมลแล้ว
URL ของเว็บที่ใช้ที่นี่คือ URL ที่กําหนดค่าไว้ในส่วนเทมเพลตการดําเนินการของอีเมล ระบบจะจัดสรรค่าเริ่มต้นสำหรับโปรเจ็กต์ทั้งหมด โปรดดู การกำหนดค่าเครื่องจัดการอีเมลเพื่อเรียนรู้เพิ่มเติม วิธีปรับแต่งเครื่องจัดการการดำเนินการอีเมล
ในกรณีนี้ ลิงก์ภายในพารามิเตอร์การค้นหา continueURL
จะเป็นลิงก์ FDL ที่มีเพย์โหลดเป็น URL
ที่ระบุไว้ในออบเจ็กต์ ActionCodeSettings
แม้ว่าคุณจะสกัดกั้นและจัดการลิงก์ขาเข้าจากแอปได้โดยไม่ต้องใช้ทรัพยากรเพิ่มเติม แต่เราขอแนะนำให้ใช้คลังไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ Deep Link ให้คุณ
เมื่อจัดการกับการทำงานของอีเมล เช่น การยืนยันอีเมล รหัสการดำเนินการจาก
ต้องแยกวิเคราะห์พารามิเตอร์การค้นหา oobCode
รายการจาก Deep Link แล้วนำไปใช้
ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผล เช่น ต้องยืนยันอีเมล
การจัดการการดำเนินการกับอีเมลในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่
คุณสามารถระบุว่าต้องการจัดการลิงก์โค้ดการกระทำภายใน
แอปพลิเคชันบนอุปกรณ์เคลื่อนที่ก่อนหากมีการติดตั้งแล้ว สำหรับแอปพลิเคชัน Android คุณยังระบุผ่าน androidInstallIfNotAvailable
ได้ด้วยว่าจะให้ติดตั้งแอปหากอุปกรณ์รองรับและยังไม่มีการติดตั้งแอปดังกล่าว
หากมีการคลิกลิงก์จากอุปกรณ์ที่ไม่รองรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ระบบจะเปิดลิงก์จากหน้าเว็บแทน
ซึ่งทำได้โดยการตั้งค่า handleCodeInApp
เป็น true
ในออบเจ็กต์ FIRActionCodeSettings
(Obj-C) หรือ ActionCodeSettings
(Swift)
ชื่อแพ็กเกจ Android หรือรหัสชุดของแอปพลิเคชันบนอุปกรณ์เคลื่อนที่จะต้อง
ที่ระบุ URL ของเว็บสำรองที่ใช้ที่นี่ ในกรณีที่ไม่มีแอปบนอุปกรณ์เคลื่อนที่ให้ใช้งาน
ที่กำหนดค่าไว้ในส่วนเทมเพลตการดำเนินการกับอีเมล ระบบจะจัดสรรค่าเริ่มต้นสำหรับโปรเจ็กต์ทั้งหมด โปรดดู
การกำหนดค่าเครื่องจัดการอีเมลเพื่อเรียนรู้เพิ่มเติม
วิธีปรับแต่งเครื่องจัดการการดำเนินการอีเมล
ในกรณีนี้ ลิงก์แอปบนอุปกรณ์เคลื่อนที่ที่ส่งไปยังผู้ใช้จะเป็นลิงก์ FDL ที่มีเพย์โหลดเป็น URL ของโค้ดการดำเนินการซึ่งกําหนดค่าไว้ในคอนโซล โดยมีพารามิเตอร์การค้นหา oobCode
, mode
, apiKey
และ continueUrl
โดยค่าหลังจะเป็น URL
เดิมที่ระบุไว้ในออบเจ็กต์ FIRActionCodeSettings
(Obj-C) หรือ ActionCodeSettings
(Swift) ในขณะที่คุณสกัดกั้นและจัดการ
เราขอแนะนำลิงก์ขาเข้าจากแอปของคุณโดยไม่ต้องมีการพึ่งพาเพิ่มเติมใดๆ
โดยใช้ไลบรารีของไคลเอ็นต์ FDL เพื่อแยกวิเคราะห์ Deep Link ให้คุณ คุณใช้โค้ดการดำเนินการได้โดยตรงจากแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ซึ่งคล้ายกับวิธีจัดการจากเวิร์กโฟลว์ของเว็บที่อธิบายไว้ในส่วนการปรับแต่งตัวแฮนเดิลอีเมล
เมื่อจัดการการดำเนินการทางอีเมล เช่น การยืนยันอีเมล จะต้องแยกวิเคราะห์รหัสการดำเนินการจากพารามิเตอร์การค้นหา oobCode
จาก Deep Link แล้วนำไปใช้ผ่าน applyActionCode
เพื่อให้การเปลี่ยนแปลงมีผล เช่น ยืนยันอีเมล