คุณสามารถใช้การตรวจสอบสิทธิ์ 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.7.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:21.3.0") }การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ
(วิธีอื่น) เพิ่มไลบรารี 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.1.0")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.3.0") }
เปิดใช้การลงชื่อเข้าใช้ด้วยลิงก์อีเมลสําหรับโปรเจ็กต์ Firebase
หากต้องการลงชื่อเข้าใช้ผู้ใช้ด้วยลิงก์อีเมล คุณต้องเปิดใช้ผู้ให้บริการอีเมลและวิธีลงชื่อเข้าใช้ด้วยลิงก์อีเมลสําหรับโปรเจ็กต์ Firebase ก่อน โดยทำดังนี้
- เปิดส่วน Auth ในคอนโซล Firebase
- ในแท็บวิธีการลงชื่อเข้าใช้ ให้เปิดใช้ผู้ให้บริการอีเมล/รหัสผ่าน โปรดทราบว่าคุณต้องเปิดใช้การลงชื่อเข้าใช้ด้วยอีเมล/รหัสผ่านจึงจะใช้การลงชื่อเข้าใช้ด้วยลิงก์อีเมลได้
- ในส่วนเดียวกัน ให้เปิดใช้วิธีการลงชื่อเข้าใช้ลิงก์อีเมล (ลงชื่อเข้าใช้แบบไม่ต้องใช้รหัสผ่าน)
- คลิกบันทึก
ส่งลิงก์การตรวจสอบสิทธิ์ไปยังอีเมลของผู้ใช้
หากต้องการเริ่มขั้นตอนการตรวจสอบสิทธิ์ ให้แสดงอินเทอร์เฟซที่แจ้งให้ผู้ใช้ระบุอีเมล แล้วโทรหาsendSignInLinkToEmail
เพื่อขอให้ Firebase ส่งลิงก์การตรวจสอบสิทธิ์ไปยังอีเมลของผู้ใช้
สร้างออบเจ็กต์ ActionCodeSettings ซึ่งจะระบุวิธีการสร้างลิงก์อีเมลให้กับ Firebase ตั้งค่าฟิลด์ต่อไปนี้
url
: Deep Link ที่จะฝังและสถานะเพิ่มเติมที่จะส่งต่อ โดเมนของลิงก์ต้องอยู่ในรายการโดเมนที่ได้รับอนุญาตของคอนโซล Firebase ซึ่งดูได้โดยไปที่แท็บวิธีการลงชื่อเข้าใช้ (การตรวจสอบสิทธิ์ -> วิธีการลงชื่อเข้าใช้) ลิงก์จะเปลี่ยนเส้นทางผู้ใช้ไปยัง URL นี้หากไม่ได้ติดตั้งแอปในอุปกรณ์และติดตั้งแอปไม่ได้androidPackageName
และIOSBundleId
: แอปที่จะใช้เมื่อเปิดลิงก์ลงชื่อเข้าใช้ในอุปกรณ์ Android หรือ Apple ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกําหนดค่า Firebase Dynamic Links เพื่อเปิดลิงก์การดําเนินการทางอีเมลผ่านแอปบนอุปกรณ์เคลื่อนที่handleCodeInApp
: ตั้งค่าเป็น "จริง" การดำเนินการลงชื่อเข้าใช้ต้องดำเนินการให้เสร็จสมบูรณ์ในแอปเสมอ ซึ่งแตกต่างจากการดำเนินการอื่นๆ ทางอีเมลนอกแบนด์ (การรีเซ็ตรหัสผ่านและการยืนยันอีเมล) เนื่องจากเมื่อสิ้นสุดขั้นตอน ผู้ใช้จะลงชื่อเข้าใช้และสถานะการตรวจสอบสิทธิ์จะยังคงอยู่ในแอปdynamicLinkDomain
: เมื่อกำหนดโดเมนลิงก์แบบไดนามิกที่กำหนดเองหลายรายการสำหรับโปรเจ็กต์ ให้ระบุโดเมนที่จะใช้เมื่อเปิดลิงก์ผ่านแอปบนอุปกรณ์เคลื่อนที่ที่ระบุ (เช่นexample.page.link
) มิเช่นนั้นระบบจะเลือกโดเมนแรกโดยอัตโนมัติ
Kotlin
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
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 เปลี่ยนเส้นทางและนำกลับมาใช้ใหม่ เนื่องจากอาจเปิดใช้การแทรกเซสชัน
หลังจากลงชื่อเข้าใช้เสร็จแล้ว ระบบจะนำกลไกการลงชื่อเข้าใช้ก่อนหน้านี้ที่ยังไม่ได้ยืนยันออกจากผู้ใช้ และเซสชันที่มีอยู่จะใช้งานไม่ได้ ตัวอย่างเช่น หากก่อนหน้านี้มีคนสร้างบัญชีที่ยังไม่ยืนยันโดยใช้อีเมลและรหัสผ่านเดียวกัน ระบบจะนำรหัสผ่านของผู้ใช้ออกเพื่อป้องกันไม่ให้ผู้แอบอ้างเป็นบุคคลอื่นที่อ้างสิทธิ์ความเป็นเจ้าของและสร้างบัญชีที่ยังไม่ยืนยันดังกล่าวลงชื่อเข้าใช้อีกครั้งด้วยอีเมลและรหัสผ่านที่ยังไม่ยืนยัน
นอกจากนี้ โปรดตรวจสอบว่าคุณใช้ URL ของ HTTPS ในเวอร์ชันที่ใช้งานจริงเพื่อหลีกเลี่ยงไม่ให้เซิร์ฟเวอร์สื่อกลางอาจขัดขวางลิงก์ของคุณ
ลงชื่อเข้าใช้แอป Android ให้เสร็จสมบูรณ์
การตรวจสอบสิทธิ์ Firebase ใช้ลิงก์แบบไดนามิกของ Firebase เพื่อส่งลิงก์อีเมลไปยังอุปกรณ์เคลื่อนที่ หากต้องการลงชื่อเข้าใช้ให้เสร็จสมบูรณ์ผ่านแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ คุณต้องกำหนดค่าแอปพลิเคชันให้ตรวจหาลิงก์แอปพลิเคชันขาเข้า แยกวิเคราะห์ Deep Link ที่เกี่ยวข้อง แล้วลงชื่อเข้าใช้ให้เสร็จสมบูรณ์
การกำหนดค่าลิงก์แบบไดนามิกของ Firebase
Firebase Auth ใช้ Firebase Dynamic Links เมื่อส่งลิงก์ที่มีไว้เพื่อเปิดในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ หากต้องการใช้ฟีเจอร์นี้ คุณต้องต้องกําหนดค่าลิงก์แบบไดนามิกในคอนโซล Firebase
เปิดใช้ Firebase Dynamic Links
- เปิดส่วน Dynamic Links ในคอนโซล Firebase
-
หากคุณยังไม่ได้ยอมรับข้อกําหนดของ Dynamic Links และสร้างโดเมน Dynamic Links ให้ทําเลย
หากคุณสร้างโดเมน Dynamic Links ไว้แล้ว ให้จดโดเมนนั้นไว้ โดยปกติแล้ว Dynamic Links โดเมนจะมีลักษณะดังตัวอย่างต่อไปนี้
example.page.link
คุณต้องใช้ค่านี้เมื่อกำหนดค่าแอป Apple หรือ Android ให้สกัดกั้นลิงก์ขาเข้า
การกำหนดค่าแอปพลิเคชัน Android
- หากต้องการจัดการลิงก์เหล่านี้จากแอปพลิเคชัน Android คุณต้องระบุชื่อแพ็กเกจ Android ในการตั้งค่าโปรเจ็กต์ของ Firebase Console นอกจากนี้ คุณยังต้องระบุ SHA-1 และ SHA-256 ของใบรับรองแอปพลิเคชันด้วย
- เมื่อคุณเพิ่มโดเมนลิงก์แบบไดนามิกและตรวจสอบว่าแอป Android ได้รับการกําหนดค่าอย่างถูกต้องแล้ว ลิงก์แบบไดนามิกจะเปลี่ยนเส้นทางไปยังแอปพลิเคชันของคุณโดยเริ่มจากกิจกรรมใน Launcher
- หากต้องการให้ลิงก์แบบไดนามิกเปลี่ยนเส้นทางไปยังกิจกรรมที่เฉพาะเจาะจง คุณจะต้องกำหนดค่าตัวกรอง Intent ในไฟล์ AndroidManifest.xml ซึ่งทำได้โดยระบุโดเมนลิงก์แบบไดนามิกหรือตัวแฮนเดิลการดำเนินการผ่านอีเมลในตัวกรอง Intent โดยค่าเริ่มต้น ตัวแฮนเดิลการดำเนินการทางอีเมลจะโฮสต์ในโดเมน เช่น ตัวอย่างต่อไปนี้
PROJECT_ID.firebaseapp.com/
- ข้อจํากัด:
- อย่าระบุ URL ที่คุณตั้งค่าไว้ใน actionCodeSettings ในตัวกรอง Intent
- เมื่อสร้างโดเมนของลิงก์แบบไดนามิก คุณอาจสร้างลิงก์ URL แบบสั้นด้วย ระบบจะไม่ส่ง URL สั้นๆ นี้ อย่ากําหนดค่าตัวกรอง Intent ให้จับ URL นี้ด้วยแอตทริบิวต์
android:pathPrefix
ซึ่งหมายความว่าคุณจะไม่สามารถจับลิงก์แบบไดนามิกที่แตกต่างกันในส่วนต่างๆ ของแอปพลิเคชัน อย่างไรก็ตาม คุณสามารถตรวจสอบพารามิเตอร์การค้นหาmode
ในลิงก์เพื่อดูว่าระบบพยายามดำเนินการใด หรือใช้เมธอด SDK เช่นisSignInWithEmailLink
เพื่อดูว่าลิงก์ที่แอปได้รับทํางานตามที่คุณต้องการหรือไม่
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการรับลิงก์แบบไดนามิกได้ที่วิธีการรับลิงก์แบบไดนามิกของ Android
ยืนยันลิงก์และลงชื่อเข้าใช้
หลังจากได้รับลิงก์ตามที่อธิบายไว้ข้างต้น ให้ตรวจสอบว่าลิงก์ดังกล่าวมีไว้สำหรับการตรวจสอบสิทธิ์ลิงก์อีเมล แล้วลงชื่อเข้าใช้ให้เสร็จสมบูรณ์
Kotlin
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
// 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
// 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
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();