หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

สถานะการผ่านในการดำเนินการอีเมล

คุณสามารถส่งสถานะผ่าน URL ดำเนินการต่อเมื่อส่งการดำเนินการทางอีเมลเพื่อรีเซ็ตรหัสผ่านหรือยืนยันอีเมลของผู้ใช้ สิ่งนี้ทำให้ผู้ใช้สามารถกลับไปที่แอพได้หลังจากดำเนินการเสร็จสิ้น นอกจากนี้คุณสามารถระบุได้ว่าจะจัดการลิงก์การดำเนินการอีเมลโดยตรงจากแอปพลิเคชันมือถือหรือไม่เมื่อติดตั้งแทนหน้าเว็บ

สิ่งนี้มีประโยชน์อย่างมากในสถานการณ์ทั่วไปต่อไปนี้:

  • ผู้ใช้ที่ยังไม่ได้ลงชื่อเข้าใช้อาจพยายามเข้าถึงเนื้อหาที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้อย่างไรก็ตามผู้ใช้อาจลืมรหัสผ่านจึงทริกเกอร์ขั้นตอนการรีเซ็ตรหัสผ่าน ในตอนท้ายของขั้นตอนผู้ใช้คาดว่าจะกลับไปที่ส่วนของแอปที่พยายามเข้าถึง

  • แอปพลิเคชันสามารถให้การเข้าถึงบัญชีที่ได้รับการยืนยันเท่านั้น ตัวอย่างเช่นจดหมายข่าวอาจกำหนดให้ผู้ใช้ยืนยันอีเมลก่อนสมัครสมาชิก ผู้ใช้จะดำเนินการตามขั้นตอนการยืนยันอีเมลและคาดว่าจะกลับไปที่แอปเพื่อทำการสมัครให้เสร็จสมบูรณ์

  • ในกรณีอื่น ๆ ผู้ใช้อาจเริ่มขั้นตอนจากอุปกรณ์เคลื่อนที่และคาดว่าหลังจากการตรวจสอบจะกลับไปที่แอปบนอุปกรณ์เคลื่อนที่แทนเบราว์เซอร์

การมีความสามารถในการส่งสถานะผ่าน URL ต่อเป็นคุณลักษณะที่มีประสิทธิภาพที่ Firebase Auth มอบให้และสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก

ผ่านสถานะ / URL ต่อในการดำเนินการอีเมล

ในการส่ง URL ต่อไปอย่างปลอดภัยโดเมนสำหรับ URL จะต้องได้รับอนุญาตพิเศษใน คอนโซล Firebase สิ่งนี้ทำได้ในส่วนการ รับรองความถูกต้อง โดยการเพิ่มโดเมนนี้ในรายการ โดเมนที่ได้รับอนุญาต ภายใต้แท็บ วิธีการลงชื่อเข้าใช้ หากยังไม่มีอยู่

ต้องมีอินสแตนซ์ ActionCodeSettings เมื่อส่งอีเมลรีเซ็ตรหัสผ่านหรืออีเมลยืนยัน สามารถสร้างได้ด้วยคลาส ActionCodeSettings.Builder ที่ เกี่ยวข้องซึ่งมีเมธอดต่อไปนี้:

วิธี คำอธิบาย
setUrl(String url)

ตั้งค่าลิงก์ (URL สถานะ / ดำเนินการต่อ) ซึ่งมีความหมายที่แตกต่างกันในบริบทต่างๆ:

  • เมื่อลิงก์ถูกจัดการในวิดเจ็ตการดำเนินการบนเว็บนี่คือลิงก์ในรายละเอียดในพารามิเตอร์การค้นหา continueUrl ไป
  • เมื่อลิงก์ได้รับการจัดการในแอปโดยตรงนี่คือพารามิเตอร์เคียวรี continueUrl ในลิงก์ในรายละเอียดของลิงก์ไดนามิก
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 (แอป 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 Auth ใช้ ลิงก์แบบไดนามิกของ Firebase เมื่อส่งลิงก์ที่ตั้งใจจะเปิดในแอปพลิเคชันมือถือ ในการใช้คุณลักษณะนี้จำเป็นต้องกำหนดค่าลิงก์แบบไดนามิกใน Firebase Console

  1. เปิดใช้ลิงก์แบบไดนามิกของ Firebase:

    1. ใน คอนโซล Firebase เปิดส่วน ลิงก์แบบไดนามิก
    2. หากคุณยังไม่ยอมรับเงื่อนไขลิงก์แบบไดนามิกและสร้างโดเมนลิงก์แบบไดนามิกให้ดำเนินการตอนนี้

      หากคุณสร้างโดเมนลิงก์แบบไดนามิกแล้วให้จดบันทึกไว้ โดยทั่วไปโดเมนลิงก์แบบไดนามิกจะมีลักษณะดังตัวอย่างต่อไปนี้:

      example.page.link

      คุณจะต้องใช้ค่านี้เมื่อกำหนดค่าแอป iOS หรือ Android เพื่อสกัดกั้นลิงก์ขาเข้า

  2. การกำหนดค่าแอปพลิเคชัน Android:

    1. หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android ของคุณจะต้องระบุชื่อแพ็กเกจ Android ในการตั้งค่าโครงการ Firebase Console นอกจากนี้จำเป็นต้องมี SHA-1 และ SHA-256 ของใบรับรองการสมัคร
    2. คุณจะต้องกำหนดค่าตัวกรองความตั้งใจสำหรับลิงก์ในรายละเอียดในไฟล์ AndroidManifest.xml ของคุณ
    3. สำหรับข้อมูลเพิ่มเติมโปรดดูคำแนะนำการ รับลิงก์แบบไดนามิกของ Android
  3. การกำหนดค่าแอปพลิเคชัน iOS:

    1. หากคุณวางแผนที่จะจัดการลิงก์เหล่านี้จากแอปพลิเคชัน iOS ของคุณจำเป็นต้องระบุรหัสชุด iOS ในการตั้งค่าโครงการ Firebase Console นอกจากนี้ยังต้องระบุ App Store ID และ Apple Developer Team ID ด้วย
    2. คุณจะต้องกำหนดค่าโดเมนลิงก์สากล FDL เป็นโดเมนที่เกี่ยวข้องในความสามารถของแอปพลิเคชันของคุณ
    3. หากคุณวางแผนที่จะเผยแพร่แอปพลิเคชันของคุณไปยัง iOS เวอร์ชัน 8 และต่ำกว่าคุณจะต้องตั้งรหัสชุด iOS ของคุณเป็นรูปแบบที่กำหนดเองสำหรับ URL ขาเข้า
    4. สำหรับข้อมูลเพิ่มเติมโปรดดูคำแนะนำการ รับลิงก์แบบไดนามิกของ 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 เพื่อให้การเปลี่ยนแปลงมีผลเช่นอีเมลจะได้รับการยืนยัน