คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อลงชื่อเข้าใช้ผู้ใช้โดยส่งอีเมลที่มีลิงก์ซึ่งผู้ใช้สามารถคลิกเพื่อลงชื่อเข้าใช้ได้ ในกระบวนการนี้ ที่อยู่อีเมลของผู้ใช้จะได้รับการยืนยันด้วย
การลงชื่อเข้าใช้ทางอีเมลมีประโยชน์มากมาย:
- การลงทะเบียนและการลงชื่อเข้าใช้ที่มีแรงเสียดทานต่ำ
- ลดความเสี่ยงของการใช้รหัสผ่านซ้ำในแอปพลิเคชัน ซึ่งอาจบ่อนทำลายความปลอดภัยของรหัสผ่านที่เลือกมาอย่างดี
- ความสามารถในการตรวจสอบสิทธิ์ผู้ใช้ในขณะเดียวกันก็ยืนยันว่าผู้ใช้เป็นเจ้าของที่อยู่อีเมลที่ถูกต้องตามกฎหมาย
- ผู้ใช้ต้องการเพียงบัญชีอีเมลที่สามารถเข้าถึงได้เพื่อลงชื่อเข้าใช้ ไม่จำเป็นต้องเป็นเจ้าของหมายเลขโทรศัพท์หรือบัญชีโซเชียลมีเดีย
- ผู้ใช้สามารถลงชื่อเข้าใช้ได้อย่างปลอดภัยโดยไม่จำเป็นต้องระบุ (หรือจำ) รหัสผ่าน ซึ่งอาจยุ่งยากบนอุปกรณ์เคลื่อนที่
- ผู้ใช้ปัจจุบันที่ลงชื่อเข้าใช้ด้วยตัวระบุอีเมลก่อนหน้านี้ (รหัสผ่านหรือแบบรวมศูนย์) สามารถอัปเกรดให้ลงชื่อเข้าใช้ด้วยอีเมลเพียงอย่างเดียวได้ ตัวอย่างเช่น ผู้ใช้ที่ลืมรหัสผ่านยังสามารถลงชื่อเข้าใช้ได้โดยไม่จำเป็นต้องรีเซ็ตรหัสผ่าน
ก่อนที่คุณจะเริ่ม
ตั้งค่าโครงการ Android ของคุณ
หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ
ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) ให้เพิ่มการพึ่งพาสำหรับ Firebase Authentication ไลบรารี่สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมเวอร์ชันไลบรารีนอกจากนี้ ในการตั้งค่าการตรวจสอบสิทธิ์ Firebase คุณจะต้องเพิ่ม SDK บริการ Google Play ลงในแอปของคุณ
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.6.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:20.7.0") }เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
กำลังมองหาโมดูลไลบรารีเฉพาะของ Kotlin อยู่ใช่ไหม? เริ่มตั้งแต่ เดือนตุลาคม 2023 (Firebase BoM 32.5.0) ทั้งนักพัฒนา Kotlin และ Java สามารถพึ่งพาโมดูลไลบรารีหลักได้ (สำหรับรายละเอียด โปรดดู คำถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้ )(ทางเลือก) เพิ่มการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการขึ้นต่อกัน
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลาย ไลบรารีในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM ในการจัดการเวอร์ชันไลบรารี ซึ่งจะทำให้แน่ใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:22.3.0")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:20.7.0") }
เปิดใช้งานการลงชื่อเข้าใช้ลิงก์อีเมลสำหรับโปรเจ็กต์ Firebase ของคุณ
หากต้องการลงชื่อเข้าใช้ผู้ใช้ด้วยลิงก์อีเมล คุณต้องเปิดใช้งานผู้ให้บริการอีเมลและวิธีการลงชื่อเข้าใช้ลิงก์อีเมลสำหรับโปรเจ็กต์ Firebase ของคุณก่อน:
- ใน คอนโซล Firebase ให้เปิดส่วน การตรวจสอบสิทธิ์
- บนแท็บ วิธีการลงชื่อเข้า ใช้ ให้เปิดใช้งานผู้ให้บริการ อีเมล/รหัสผ่าน โปรดทราบว่าต้องเปิดใช้งานการลงชื่อเข้าใช้อีเมล/รหัสผ่านเพื่อใช้การลงชื่อเข้าใช้ลิงก์อีเมล
- ในส่วนเดียวกัน ให้เปิดใช้งานวิธีลงชื่อ เข้าใช้ลิงก์อีเมล (ลงชื่อเข้าใช้โดยไม่ใช้รหัสผ่าน)
- คลิก บันทึก
ส่งลิงก์การรับรองความถูกต้องไปยังที่อยู่อีเมลของผู้ใช้
ในการเริ่มต้นขั้นตอนการตรวจสอบสิทธิ์ ให้นำเสนออินเทอร์เฟซแก่ผู้ใช้ที่แจ้งให้ผู้ใช้ระบุที่อยู่อีเมล จากนั้นโทร sendSignInLinkToEmail
เพื่อขอให้ Firebase ส่งลิงก์การตรวจสอบสิทธิ์ไปยังอีเมลของผู้ใช้
สร้างออบเจ็กต์ ActionCodeSettings ซึ่งให้คำแนะนำเกี่ยวกับวิธีสร้างลิงก์อีเมลแก่ Firebase ตั้งค่าฟิลด์ต่อไปนี้:
-
url
: ลิงก์ในรายละเอียดที่จะฝังและสถานะเพิ่มเติมใดๆ ที่จะส่งต่อ โดเมนของลิงก์จะต้องอยู่ในรายการที่อนุญาตพิเศษในรายการคอนโซล Firebase ของโดเมนที่ได้รับอนุญาต ซึ่งสามารถพบได้โดยไปที่แท็บวิธีการลงชื่อเข้าใช้ (การรับรองความถูกต้อง -> วิธีการลงชื่อเข้าใช้) ลิงก์จะเปลี่ยนเส้นทางผู้ใช้ไปยัง URL นี้ หากไม่ได้ติดตั้งแอปบนอุปกรณ์ของตนและไม่สามารถติดตั้งแอปได้ -
androidPackageName
และIOSBundleId
: แอปที่จะใช้เมื่อเปิดลิงก์ลงชื่อเข้าใช้บนอุปกรณ์ Android หรือ Apple เรียนรู้เพิ่มเติมเกี่ยวกับวิธี กำหนดค่า Firebase Dynamic Links เพื่อเปิดลิงก์การดำเนินการอีเมลผ่านแอปมือถือ -
handleCodeInApp
: ตั้งค่าเป็นจริง การลงชื่อเข้าใช้จะต้องเสร็จสิ้นในแอปเสมอ ไม่เหมือนกับการดำเนินการอีเมลนอกกลุ่มอื่นๆ (การรีเซ็ตรหัสผ่านและการยืนยันอีเมล) เนื่องจากในตอนท้ายของโฟลว์ ผู้ใช้จะต้องลงชื่อเข้าใช้และสถานะการรับรองความถูกต้องยังคงอยู่ในแอป -
dynamicLinkDomain
: เมื่อมีการกำหนดโดเมนลิงก์ไดนามิกแบบกำหนดเองหลายโดเมนสำหรับโปรเจ็กต์ ให้ระบุว่าจะใช้โดเมนใดเมื่อจะเปิดลิงก์ผ่านแอปมือถือที่ระบุ (เช่นexample.page.link
) มิฉะนั้น โดเมนแรกจะถูกเลือกโดยอัตโนมัติ
Kotlin+KTX
val actionCodeSettings = actionCodeSettings { // URL you want to redirect back to. The domain (www.example.com) for this // URL must be whitelisted in the Firebase Console. url = "https://www.example.com/finishSignUp?cartId=1234" // This must be true handleCodeInApp = true setIOSBundleId("com.example.ios") setAndroidPackageName( "com.example.android", true, // installIfNotAvailable "12", // minimumVersion ) }
Java
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() // URL you want to redirect back to. The domain (www.example.com) for this // URL must be whitelisted in the Firebase Console. .setUrl("https://www.example.com/finishSignUp?cartId=1234") // This must be true .setHandleCodeInApp(true) .setIOSBundleId("com.example.ios") .setAndroidPackageName( "com.example.android", true, /* installIfNotAvailable */ "12" /* minimumVersion */) .build();
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ ActionCodeSettings โปรดดูส่วน สถานะการส่งผ่านในการดำเนินการกับอีเมล
-
ขออีเมลจากผู้ใช้
ส่งลิงก์การตรวจสอบสิทธิ์ไปยังอีเมลของผู้ใช้ และบันทึกอีเมลของผู้ใช้ในกรณีที่ผู้ใช้ลงชื่อเข้าใช้อีเมลบนอุปกรณ์เครื่องเดียวกัน
Kotlin+KTX
Firebase.auth.sendSignInLinkToEmail(email, actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); auth.sendSignInLinkToEmail(email, actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
ลงชื่อเข้าใช้ให้เสร็จสิ้นด้วยลิงก์อีเมล
ข้อกังวลด้านความปลอดภัย
เพื่อป้องกันไม่ให้มีการใช้ลิงก์ลงชื่อเข้าใช้เพื่อลงชื่อเข้าใช้ในฐานะผู้ใช้ที่ไม่ได้ตั้งใจหรือบนอุปกรณ์ที่ไม่ได้ตั้งใจ Firebase Auth กำหนดให้ต้องระบุที่อยู่อีเมลของผู้ใช้เมื่อดำเนินการขั้นตอนการลงชื่อเข้าใช้ให้เสร็จสิ้น เพื่อให้การลงชื่อเข้าใช้สำเร็จ ที่อยู่อีเมลนี้จะต้องตรงกับที่อยู่ซึ่งลิงก์การลงชื่อเข้าใช้ถูกส่งไปในตอนแรก
คุณสามารถปรับปรุงขั้นตอนนี้สำหรับผู้ใช้ที่เปิดลิงก์ลงชื่อเข้าใช้บนอุปกรณ์เดียวกับที่พวกเขาขอลิงก์ โดยจัดเก็บที่อยู่อีเมลไว้ในเครื่อง - เช่น การใช้ SharedPreferences - เมื่อคุณส่งอีเมลลงชื่อเข้าใช้ จากนั้นใช้ที่อยู่นี้เพื่อดำเนินการโฟลว์ให้เสร็จสิ้น อย่าส่งอีเมลของผู้ใช้ในพารามิเตอร์ URL การเปลี่ยนเส้นทางและนำมาใช้ซ้ำ เนื่องจากอาจเปิดใช้การแทรกเซสชันได้
หลังจากการลงชื่อเข้าใช้เสร็จสิ้น กลไกการลงชื่อเข้าใช้ก่อนหน้านี้ที่ไม่ได้รับการตรวจสอบจะถูกลบออกจากผู้ใช้ และเซสชันที่มีอยู่จะใช้งานไม่ได้ ตัวอย่างเช่น หากก่อนหน้านี้มีคนสร้างบัญชีที่ไม่ได้รับการยืนยันด้วยอีเมลและรหัสผ่านเดียวกัน รหัสผ่านของผู้ใช้จะถูกลบออกเพื่อป้องกันไม่ให้ผู้แอบอ้างอ้างความเป็นเจ้าของและสร้างบัญชีที่ไม่ได้รับการยืนยันนั้นลงชื่อเข้าใช้อีกครั้งด้วยอีเมลและรหัสผ่านที่ไม่ได้รับการยืนยัน
ตรวจสอบให้แน่ใจว่าคุณใช้ HTTPS URL ในการใช้งานจริงเพื่อหลีกเลี่ยงไม่ให้เซิร์ฟเวอร์ตัวกลางดักจับลิงก์ของคุณ
ลงชื่อเข้าใช้แอป Android ให้เสร็จสิ้น
การตรวจสอบสิทธิ์ Firebase ใช้ Firebase Dynamic Links เพื่อส่งลิงก์อีเมลไปยังอุปกรณ์เคลื่อนที่ เพื่อให้การลงชื่อเข้าใช้เสร็จสมบูรณ์ผ่านแอปพลิเคชันมือถือ จะต้องกำหนดค่าแอปพลิเคชันให้ตรวจจับลิงก์แอปพลิเคชันขาเข้า แยกวิเคราะห์ลิงก์ในรายละเอียด จากนั้นจึงลงชื่อเข้าใช้ให้เสร็จสิ้น
การกำหนดค่าลิงก์ไดนามิกของ Firebase
Firebase Auth ใช้ Firebase Dynamic Links เมื่อส่งลิงก์ที่มีไว้เพื่อเปิดในแอปพลิเคชันมือถือ หากต้องการใช้ฟีเจอร์นี้ จะต้อง กำหนดค่าลิงก์แบบไดนามิกในคอนโซล Firebase
เปิดใช้งานลิงก์ไดนามิกของ Firebase:
- ใน คอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก
หากคุณยังไม่ได้ยอมรับข้อกำหนดของลิงก์แบบไดนามิกและสร้างโดเมนลิงก์แบบไดนามิก ให้ดำเนินการทันที
หากคุณสร้างโดเมน Dynamic Links แล้ว โปรดจดบันทึกไว้ โดยทั่วไปโดเมนลิงก์แบบไดนามิกจะมีลักษณะเหมือนตัวอย่างต่อไปนี้:
example.page.link
คุณจะต้องใช้ค่านี้เมื่อกำหนดค่าแอป Apple หรือ Android เพื่อสกัดกั้นลิงก์ขาเข้า
การกำหนดค่าแอปพลิเคชัน Android:
- ในการจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android ของคุณ จะต้องระบุชื่อแพ็กเกจ Android ในการตั้งค่าโปรเจ็กต์คอนโซล Firebase นอกจากนี้ จำเป็นต้องจัดเตรียมใบรับรองการสมัคร SHA-1 และ SHA-256 ด้วย
- เมื่อคุณได้เพิ่มโดเมนลิงก์แบบไดนามิกและแน่ใจว่าแอป Android ของคุณได้รับการกำหนดค่าอย่างถูกต้องแล้ว ลิงก์แบบไดนามิกจะเปลี่ยนเส้นทางไปยังแอปพลิเคชันของคุณ โดยเริ่มจากกิจกรรมตัวเรียกใช้งาน
- หากคุณต้องการให้ลิงก์ไดนามิกเปลี่ยนเส้นทางไปยังกิจกรรมเฉพาะ คุณจะต้องกำหนดค่าตัวกรอง Intent ในไฟล์ AndroidManifest.xml ของคุณ ซึ่งสามารถทำได้โดยการระบุโดเมนลิงก์แบบไดนามิกของคุณหรือตัวจัดการการดำเนินการอีเมลในตัวกรองเจตนา ตามค่าเริ่มต้น ตัวจัดการการดำเนินการอีเมลจะโฮสต์อยู่บนโดเมนตามตัวอย่างต่อไปนี้:
PROJECT_ID.firebaseapp.com/
- ข้อควรระวัง:
- อย่าระบุ URL ที่คุณตั้งไว้ใน actionCodeSettings ในตัวกรอง Intent ของคุณ
- เมื่อสร้างโดเมนลิงก์แบบไดนามิก คุณอาจสร้างลิงก์ URL แบบสั้นด้วย URL แบบสั้นนี้จะไม่ถูกส่งผ่าน อย่า กำหนดค่าตัวกรองเจตนาของคุณให้ตรวจจับด้วยแอตทริบิวต์
android:pathPrefix
ซึ่งหมายความว่าคุณจะไม่สามารถรับลิงก์ไดนามิกที่แตกต่างกันในส่วนต่างๆ ของแอปพลิเคชันของคุณได้ อย่างไรก็ตาม คุณ สามารถ ตรวจสอบพารามิเตอร์mode
การค้นหาในลิงก์เพื่อดูว่ากำลังดำเนินการใดอยู่ หรือใช้วิธีการ SDK เช่นisSignInWithEmailLink
เพื่อดูว่าลิงก์ที่แอปของคุณได้รับนั้นทำงานตามที่คุณต้องการหรือไม่
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรับลิงก์แบบไดนามิก โปรดดู คำแนะนำในการรับลิงก์แบบไดนามิกของ Android
ยืนยันลิงก์และลงชื่อเข้าใช้
หลังจากที่คุณได้รับลิงก์ตามที่อธิบายไว้ข้างต้น ให้ตรวจสอบว่าลิงก์นั้นมีไว้สำหรับการตรวจสอบลิงก์อีเมลและลงชื่อเข้าใช้ให้เสร็จสิ้น
Kotlin+KTX
val auth = Firebase.auth val intent = intent val emailLink = intent.data.toString() // Confirm the link is a sign-in with email link. if (auth.isSignInWithEmailLink(emailLink)) { // Retrieve this from wherever you stored it val email = "someemail@domain.com" // The client SDK will parse the code from the link for you. auth.signInWithEmailLink(email, emailLink) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Successfully signed in with email link!") val result = task.result // You can access the new user via result.getUser() // Additional user info profile *not* available via: // result.getAdditionalUserInfo().getProfile() == null // You can check if the user is new or existing: // result.getAdditionalUserInfo().isNewUser() } else { Log.e(TAG, "Error signing in with email link", task.exception) } } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); Intent intent = getIntent(); String emailLink = intent.getData().toString(); // Confirm the link is a sign-in with email link. if (auth.isSignInWithEmailLink(emailLink)) { // Retrieve this from wherever you stored it String email = "someemail@domain.com"; // The client SDK will parse the code from the link for you. auth.signInWithEmailLink(email, emailLink) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Log.d(TAG, "Successfully signed in with email link!"); AuthResult result = task.getResult(); // You can access the new user via result.getUser() // Additional user info profile *not* available via: // result.getAdditionalUserInfo().getProfile() == null // You can check if the user is new or existing: // result.getAdditionalUserInfo().isNewUser() } else { Log.e(TAG, "Error signing in with email link", task.getException()); } } }); }
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีจัดการการลงชื่อเข้าใช้ด้วยลิงก์อีเมลในแอปพลิเคชันของ Apple โปรดดู คู่มือแพลตฟอร์มของ Apple
หากต้องการเรียนรู้เกี่ยวกับวิธีจัดการการลงชื่อเข้าใช้ด้วยลิงก์อีเมลในเว็บแอปพลิเคชัน โปรดดู คู่มือเว็บ
การเชื่อมโยง/การรับรองความถูกต้องอีกครั้งด้วยลิงก์อีเมล
คุณยังสามารถเชื่อมโยงวิธีการตรวจสอบสิทธิ์นี้กับผู้ใช้ที่มีอยู่ได้ ตัวอย่างเช่น ผู้ใช้ที่เคยตรวจสอบสิทธิ์กับผู้ให้บริการรายอื่น เช่น หมายเลขโทรศัพท์ สามารถเพิ่มวิธีการลงชื่อเข้าใช้นี้ในบัญชีที่มีอยู่ได้
ความแตกต่างจะอยู่ในช่วงครึ่งหลังของการดำเนินการ:
Kotlin+KTX
// Construct the email link credential from the current URL. val credential = EmailAuthProvider.getCredentialWithLink(email, emailLink) // Link the credential to the current user. Firebase.auth.currentUser!!.linkWithCredential(credential) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Successfully linked emailLink credential!") val result = task.result // You can access the new user via result.getUser() // Additional user info profile *not* available via: // result.getAdditionalUserInfo().getProfile() == null // You can check if the user is new or existing: // result.getAdditionalUserInfo().isNewUser() } else { Log.e(TAG, "Error linking emailLink credential", task.exception) } }
Java
// Construct the email link credential from the current URL. AuthCredential credential = EmailAuthProvider.getCredentialWithLink(email, emailLink); // Link the credential to the current user. auth.getCurrentUser().linkWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Log.d(TAG, "Successfully linked emailLink credential!"); AuthResult result = task.getResult(); // You can access the new user via result.getUser() // Additional user info profile *not* available via: // result.getAdditionalUserInfo().getProfile() == null // You can check if the user is new or existing: // result.getAdditionalUserInfo().isNewUser() } else { Log.e(TAG, "Error linking emailLink credential", task.getException()); } } });
นอกจากนี้ยังสามารถใช้เพื่อตรวจสอบสิทธิ์ผู้ใช้ลิงก์อีเมลอีกครั้งก่อนที่จะดำเนินการที่ละเอียดอ่อน
Kotlin+KTX
// Construct the email link credential from the current URL. val credential = EmailAuthProvider.getCredentialWithLink(email, emailLink) // Re-authenticate the user with this credential. Firebase.auth.currentUser!!.reauthenticateAndRetrieveData(credential) .addOnCompleteListener { task -> if (task.isSuccessful) { // User is now successfully reauthenticated } else { Log.e(TAG, "Error reauthenticating", task.exception) } }
Java
// Construct the email link credential from the current URL. AuthCredential credential = EmailAuthProvider.getCredentialWithLink(email, emailLink); // Re-authenticate the user with this credential. auth.getCurrentUser().reauthenticateAndRetrieveData(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // User is now successfully reauthenticated } else { Log.e(TAG, "Error reauthenticating", task.getException()); } } });
อย่างไรก็ตาม เนื่องจากขั้นตอนนี้อาจไปสิ้นสุดบนอุปกรณ์อื่นที่ผู้ใช้เดิมไม่ได้เข้าสู่ระบบ ขั้นตอนนี้จึงอาจไม่เสร็จสมบูรณ์ ในกรณีดังกล่าว ผู้ใช้อาจแสดงข้อผิดพลาดเพื่อบังคับให้เปิดลิงก์บนอุปกรณ์เดียวกัน บางสถานะสามารถส่งผ่านในลิงก์เพื่อให้ข้อมูลเกี่ยวกับประเภทการดำเนินการและ uid ของผู้ใช้
เลิกใช้แล้ว: การแยกความแตกต่างอีเมล-รหัสผ่านจากลิงก์อีเมล
หากคุณสร้างโปรเจ็กต์ในหรือหลังวันที่ 15 กันยายน 2023 การป้องกันการแจงนับอีเมลจะถูกเปิดใช้งานตามค่าเริ่มต้น ฟีเจอร์นี้ปรับปรุงการรักษาความปลอดภัยของบัญชีผู้ใช้โปรเจ็กต์ของคุณ แต่จะปิดใช้เมธอด fetchSignInMethodsForEmail()
ซึ่งก่อนหน้านี้เราแนะนำให้ใช้โฟลว์ที่เน้นตัวระบุเป็นหลัก
แม้ว่าคุณจะสามารถปิดใช้งานการป้องกันการแจงนับอีเมลสำหรับโครงการของคุณได้ แต่เราขอแนะนำไม่ให้ทำเช่นนั้น
ดูเอกสารประกอบเกี่ยวกับ การป้องกันการแจงนับอีเมล สำหรับรายละเอียดเพิ่มเติม
ขั้นตอนถัดไป
หลังจากที่ผู้ใช้ลงชื่อเข้าใช้เป็นครั้งแรก บัญชีผู้ใช้ใหม่จะถูกสร้างขึ้นและเชื่อมโยงกับข้อมูลประจำตัว ซึ่งได้แก่ ชื่อผู้ใช้และรหัสผ่าน หมายเลขโทรศัพท์ หรือข้อมูลผู้ให้บริการรับรองความถูกต้อง ซึ่งผู้ใช้ลงชื่อเข้าใช้ด้วย บัญชีใหม่นี้จัดเก็บไว้เป็นส่วนหนึ่งของโปรเจ็กต์ Firebase ของคุณ และสามารถใช้เพื่อระบุผู้ใช้ในทุกแอปในโปรเจ็กต์ของคุณ ไม่ว่าผู้ใช้จะลงชื่อเข้าใช้ด้วยวิธีใดก็ตาม
ในแอปของคุณ คุณจะรับข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ได้จากออบเจ็กต์
FirebaseUser
ดู จัดการผู้ใช้ในฐานข้อมูลเรียลไทม์ Firebase และ กฎความปลอดภัยของ พื้นที่เก็บข้อมูลบนคลาวด์ คุณสามารถรับ ID ผู้ใช้เฉพาะของผู้ใช้ที่ลงชื่อเข้าใช้จากตัวแปร
auth
และใช้เพื่อควบคุมข้อมูลที่ผู้ใช้สามารถเข้าถึงได้
คุณสามารถอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปของคุณโดยใช้ผู้ให้บริการตรวจสอบสิทธิ์หลายรายได้โดย การเชื่อมโยงข้อมูลประจำตัวของผู้ให้บริการตรวจสอบสิทธิ์กับบัญชีผู้ใช้ที่มีอยู่
หากต้องการออกจากระบบผู้ใช้ ให้โทร signOut
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();