คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อลงชื่อเข้าใช้ผู้ใช้ได้โดยการส่งอีเมลถึงผู้ใช้ ที่มีลิงก์ซึ่งผู้ใช้คลิกเพื่อลงชื่อเข้าใช้ได้ ในขั้นตอนนี้ อินเทอร์เฟซผู้ใช้ ได้รับการยืนยันแล้ว
การลงชื่อเข้าใช้ทางอีเมลมีประโยชน์หลายประการดังนี้
- การลงชื่อสมัครใช้และการลงชื่อเข้าใช้ที่มีความติดขัดต่ำ
- ลดความเสี่ยงที่จะนำรหัสผ่านไปใช้ซ้ำในแอปพลิเคชันต่างๆ ซึ่งอาจส่งผลเสียต่อการรักษาความปลอดภัย รหัสผ่านที่คัดสรรมาอย่างดี
- ความสามารถในการตรวจสอบสิทธิ์ผู้ใช้ ขณะเดียวกันก็ยืนยันว่าผู้ใช้เป็น เจ้าของที่อยู่อีเมลที่ถูกต้อง
- ผู้ใช้ต้องมีเพียงบัญชีอีเมลที่เข้าถึงได้เพื่อลงชื่อเข้าใช้ ไม่มีการเป็นเจ้าของ ต้องระบุหมายเลขโทรศัพท์หรือบัญชีโซเชียลมีเดีย
- ผู้ใช้สามารถลงชื่อเข้าใช้ได้อย่างปลอดภัยโดยไม่ต้องระบุ (หรือจำ) ซึ่งอาจเป็นเรื่องยุ่งยากในอุปกรณ์เคลื่อนที่
- ผู้ใช้ที่มีอยู่ซึ่งก่อนหน้านี้ได้ลงชื่อเข้าใช้ด้วยตัวระบุอีเมล (รหัสผ่าน หรือแบบรวมศูนย์) สามารถอัปเกรดเพื่อลงชื่อเข้าใช้ด้วยอีเมลเพียงอย่างเดียว ตัวอย่างเช่น ผู้ใช้ที่ลืมรหัสผ่านยังสามารถลงชื่อเข้าใช้ได้โดยไม่ต้อง รีเซ็ตรหัสผ่าน
ก่อนเริ่มต้น
ตั้งค่าโปรเจ็กต์ Android
หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Android
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (ปกติ
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) เพิ่มทรัพยากร Dependency สำหรับไลบรารี Firebase Authentication สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันไลบรารีนอกจากนี้ ในการตั้งค่า Firebase Authentication คุณจะต้องเพิ่ม SDK ของบริการ Google Play ลงในแอปของคุณ
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.2")) // 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:21.2.0") }เมื่อใช้Firebase Android BoM แอปจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ใช้ BoM
หากเลือกไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชัน ในบรรทัดทรัพยากร Dependency
โปรดทราบว่าหากคุณใช้ไลบรารี 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:23.0.0")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.2.0") }
เปิดใช้การลงชื่อเข้าใช้ลิงก์อีเมลของโปรเจ็กต์ Firebase
หากต้องการลงชื่อเข้าใช้ให้ผู้ใช้ด้วยลิงก์อีเมล ก่อนอื่นคุณต้องเปิดใช้ผู้ให้บริการอีเมลและ วิธีลงชื่อเข้าใช้ลิงก์ทางอีเมลสำหรับโปรเจ็กต์ Firebase ของคุณ
- ในคอนโซล Firebase ให้เปิดส่วน Auth
- ในแท็บวิธีการลงชื่อเข้าใช้ ให้เปิดใช้ผู้ให้บริการอีเมล/รหัสผ่าน หมายเหตุ ต้องเปิดใช้การลงชื่อเข้าใช้อีเมล/รหัสผ่านเพื่อใช้การลงชื่อเข้าใช้ลิงก์อีเมล
- ในส่วนเดียวกัน ให้เปิดใช้การลงชื่อเข้าใช้ลิงก์อีเมล (การลงชื่อเข้าใช้แบบไม่ต้องใช้รหัสผ่าน)
- คลิกบันทึก
ส่งลิงก์การตรวจสอบสิทธิ์ไปยังอีเมลของผู้ใช้
ในการเริ่มต้นขั้นตอนการตรวจสอบสิทธิ์ ให้แสดงอินเทอร์เฟซที่ผู้ใช้
แจ้งให้ผู้ใช้ให้ที่อยู่อีเมลของตนแล้วโทร
sendSignInLinkToEmail
เพื่อขอให้ Firebase ส่งลิงก์การตรวจสอบสิทธิ์ให้
อีเมลของผู้ใช้
สร้าง ActionCodeSettings ซึ่งบอกวิธีการสร้าง ลิงก์อีเมล ตั้งค่าฟิลด์ต่อไปนี้:
url
: Deep Link ที่จะฝังและสถานะเพิ่มเติมที่จะส่งต่อ โดเมนของลิงก์ต้องได้รับอนุญาตพิเศษในรายการคอนโซล Firebase ของ โดเมนที่ได้รับอนุญาต ซึ่งสามารถค้นหาได้โดยไปที่แท็บวิธีการลงชื่อเข้าใช้ (การตรวจสอบสิทธิ์ -> วิธีการลงชื่อเข้าใช้) ลิงก์จะเปลี่ยนเส้นทางผู้ใช้ไปที่ URL นี้หากไม่มีการติดตั้งแอปในอุปกรณ์และแอป ที่สามารถติดตั้งได้androidPackageName
และIOSBundleId
: แอปที่จะใช้เมื่อลงชื่อเข้าใช้ มีการเปิดในอุปกรณ์ Android หรือ Apple ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธี กำหนดค่าลิงก์แบบไดนามิกของ Firebase เพื่อเปิดลิงก์การดำเนินการอีเมลผ่านแอปบนอุปกรณ์เคลื่อนที่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 เพื่อส่งลิงก์อีเมลไปยัง อุปกรณ์เคลื่อนที่ สำหรับการลงชื่อเข้าใช้เสร็จสมบูรณ์ผ่านแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ต้องกำหนดค่าให้ตรวจหาลิงก์แอปพลิเคชันที่เข้ามาใหม่ แยกวิเคราะห์ ที่แสดง Deep Link ที่เกี่ยวข้อง แล้วลงชื่อเข้าใช้ให้เสร็จสมบูรณ์
การกำหนดค่าลิงก์แบบไดนามิกของ Firebase
การตรวจสอบสิทธิ์ Firebase ใช้ลิงก์แบบไดนามิกของ Firebase เมื่อส่ง ซึ่งควรเปิดในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ หากต้องการใช้ฟีเจอร์นี้ คุณต้องกำหนดค่าลิงก์แบบไดนามิกในคอนโซล Firebase
เปิดใช้ลิงก์แบบไดนามิกของ Firebase:
- ในคอนโซล Firebase ให้เปิดส่วน Dynamic Links
-
หากคุณยังไม่ได้ยอมรับข้อกำหนด Dynamic Links และสร้าง Dynamic Links โดเมน ให้ดำเนินการในขณะนี้
หากคุณสร้างโดเมน Dynamic Links ไว้แล้ว โปรดจดบันทึกไว้ Dynamic Links โดเมนมักจะมีลักษณะดังตัวอย่างต่อไปนี้
example.page.link
คุณจะต้องใช้ค่านี้เมื่อกำหนดค่าแอป Apple หรือ Android เป็น สกัดกั้นลิงก์ขาเข้า
การกำหนดค่าแอปพลิเคชัน Android
- ในการจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android ของคุณ ต้องระบุชื่อแพ็กเกจ Android ในคอนโซล Firebase การตั้งค่าโปรเจ็กต์ นอกจากนี้ SHA-1 และ SHA-256 ของแอปพลิเคชัน ต้องระบุใบรับรอง
- เมื่อคุณได้เพิ่มโดเมนลิงก์แบบไดนามิก และตรวจสอบว่า แอป Android กำหนดค่าถูกต้อง ลิงก์แบบไดนามิกจะเปลี่ยนเส้นทางไปยัง แอปพลิเคชันของคุณ โดยเริ่มจากกิจกรรมของ Launcher
- หากคุณต้องการให้ลิงก์แบบไดนามิก
เปลี่ยนเส้นทางไปยังกิจกรรมเฉพาะ
จะต้องกำหนดค่าตัวกรอง Intent ใน AndroidManifest.xml
ซึ่งทำได้โดยการระบุโดเมนลิงก์แบบไดนามิกหรือ
เครื่องจัดการการดำเนินการกับอีเมลในตัวกรอง Intent โดยค่าเริ่มต้น อีเมล
เครื่องจัดการการดำเนินการโฮสต์อยู่บนโดเมนดังตัวอย่างต่อไปนี้
PROJECT_ID.firebaseapp.com/
- ข้อควรระวัง
- อย่าระบุ URL ที่คุณตั้งค่าไว้ใน actionCodeSettings ใน Intent
- เมื่อสร้างโดเมนลิงก์แบบไดนามิกแล้ว คุณอาจสร้าง
ลิงก์ URL แบบสั้น ระบบจะไม่ส่ง URL แบบสั้นนี้ อย่า
กำหนดค่าตัวกรอง Intent เพื่อตรวจจับด้วย
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 Realtime DatabaseและCloud Storage กฎความปลอดภัย คุณสามารถทำสิ่งต่อไปนี้ รับรหัสผู้ใช้ที่ไม่ซ้ำของผู้ใช้ที่ลงชื่อเข้าใช้จากตัวแปร
auth
และใช้เพื่อควบคุมข้อมูลที่ผู้ใช้เข้าถึงได้
คุณอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปโดยใช้การตรวจสอบสิทธิ์หลายรายการได้ โดยลิงก์ข้อมูลเข้าสู่ระบบของผู้ให้บริการการตรวจสอบสิทธิ์กับ บัญชีผู้ใช้ที่มีอยู่เดิม
หากต้องการนำผู้ใช้ออกจากระบบ โปรดโทร
signOut
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();