คุณสามารถใช้ Firebase Authentication เพื่อสร้างและใช้บัญชีที่ไม่ระบุชื่อชั่วคราว ในการตรวจสอบสิทธิ์กับ Firebase บัญชีที่ไม่ระบุชื่อชั่วคราวเหล่านี้สามารถใช้เพื่ออนุญาตให้ผู้ใช้ที่ยังไม่ได้ลงชื่อสมัครใช้แอปของคุณทำงานกับข้อมูลที่ได้รับการปกป้องโดยกฎความปลอดภัยได้ หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจลงชื่อสมัครใช้แอปของคุณ คุณสามารถ ลิงก์ข้อมูลเข้าสู่ระบบของผู้ใช้กับบัญชีที่ไม่ระบุชื่อเพื่อให้ผู้ใช้สามารถทำงานกับข้อมูลที่ได้รับการปกป้องใน เซสชันในอนาคตได้
ก่อนเริ่มต้น
- เพิ่ม Firebase ลงในโปรเจ็กต์ JavaScript
- หากยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้ดำเนินการจาก คอนโซลFirebase
-
เปิดใช้การตรวจสอบสิทธิ์แบบไม่ระบุชื่อ โดยทำดังนี้
- ในคอนโซล Firebase ให้ไปที่ ความปลอดภัย > การตรวจสอบสิทธิ์
- ในแท็บวิธีการลงชื่อเข้าใช้ ให้เปิดใช้ผู้ให้บริการการลงชื่อเข้าใช้แบบไม่ระบุชื่อ
- ไม่บังคับ: หากอัปเกรดโปรเจ็กต์เป็น Firebase Authentication with Identity Platform แล้ว คุณสามารถเปิดใช้การล้างข้อมูลอัตโนมัติได้ เมื่อเปิดใช้การตั้งค่านี้ ระบบจะลบบัญชีที่ไม่ระบุชื่อที่มีอายุมากกว่า 30 วันโดยอัตโนมัติ ในโปรเจ็กต์ที่เปิดใช้การล้างข้อมูลอัตโนมัติ การตรวจสอบสิทธิ์แบบไม่ระบุชื่อจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควต้าการเรียกเก็บเงินอีกต่อไป ดู การล้างข้อมูลอัตโนมัติ
ตรวจสอบสิทธิ์กับ Firebase แบบไม่ระบุชื่อ
เมื่อผู้ใช้ที่ออกจากระบบใช้ฟีเจอร์ของแอปที่ต้องมีการตรวจสอบสิทธิ์กับ Firebase ให้ลงชื่อเข้าใช้ผู้ใช้แบบไม่ระบุชื่อโดยทำตามขั้นตอนต่อไปนี้
- เรียกใช้เมธอด
signInAnonymouslyดังนี้นอกจากนี้ คุณยังสามารถตรวจหาและจัดการข้อผิดพลาดได้ที่นี่ ดูรายการรหัสข้อผิดพลาดได้ที่เอกสารอ้างอิงการตรวจสอบสิทธิ์Web
import { getAuth, signInAnonymously } from "firebase/auth"; const auth = getAuth(); signInAnonymously(auth) .then(() => { // Signed in.. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // ... });
Web
firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });
- หากเมธอด
signInAnonymouslyทำงานเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด ระบบจะทริกเกอร์ Observer ที่ลงทะเบียนไว้ในonAuthStateChangedและคุณจะได้รับข้อมูลบัญชีของผู้ใช้ที่ไม่ระบุชื่อจากออบเจ็กต์Userดังนี้Web
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user const uid = user.uid; // ... } else { // User is signed out // ... } });
Web
firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
เปลี่ยนบัญชีที่ไม่ระบุชื่อเป็นบัญชีถาวร
เมื่อผู้ใช้ที่ไม่ระบุชื่อลงชื่อสมัครใช้แอปของคุณ คุณอาจต้องการอนุญาตให้ผู้ใช้ทำงานต่อด้วยบัญชีใหม่ เช่น คุณอาจต้องการให้รายการที่ผู้ใช้เพิ่มลงในรถเข็นช็อปปิ้งก่อนลงชื่อสมัครใช้พร้อมใช้งานในรถเข็นช็อปปิ้งของบัญชีใหม่ หากต้องการทำเช่นนั้น ให้ทำตามขั้นตอนต่อไปนี้
- เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ทำขั้นตอนการลงชื่อเข้าใช้สำหรับผู้ให้บริการการตรวจสอบสิทธิ์ของผู้ใช้ให้เสร็จสมบูรณ์จนถึงแต่ไม่รวมการเรียกใช้เมธอด
Auth.signInWithเมธอดใดเมธอดหนึ่ง เช่น รับโทเค็นรหัส Google ของผู้ใช้ โทเค็นการเข้าถึง Facebook หรืออีเมลและรหัสผ่าน รับ
AuthCredentialสำหรับผู้ให้บริการการตรวจสอบสิทธิ์ใหม่ ดังนี้Google Sign-In
Web
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Web
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
การเข้าสู่ระบบด้วย Facebook
Web
import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken);
Web
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
การลงชื่อเข้าใช้อีเมลและรหัสผ่าน
Web
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
Web
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
ส่งออบเจ็กต์
AuthCredentialไปยังเมธอดlinkของผู้ใช้ที่ลงชื่อเข้าใช้ ดังนี้Web
import { getAuth, linkWithCredential } from "firebase/auth"; const auth = getAuth(); linkWithCredential(auth.currentUser, credential) .then((usercred) => { const user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); });
Web
auth.currentUser.linkWithCredential(credential) .then((usercred) => { var user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); });
หากการเรียกใช้ link สำเร็จ บัญชีใหม่ของผู้ใช้จะเข้าถึงข้อมูล Firebase ของบัญชีที่ไม่ระบุชื่อได้
การล้างข้อมูลอัตโนมัติ
หากอัปเกรดโปรเจ็กต์เป็น Firebase Authentication with Identity Platform แล้ว คุณสามารถ เปิดใช้การล้างข้อมูลอัตโนมัติในคอนโซล Firebase ได้ เมื่อเปิดใช้ฟีเจอร์นี้ คุณจะอนุญาตให้ Firebase ลบบัญชีที่ไม่ระบุชื่อที่มีอายุมากกว่า 30 วันโดยอัตโนมัติ ในโปรเจ็กต์ที่เปิดใช้การล้างข้อมูลอัตโนมัติ การตรวจสอบสิทธิ์แบบไม่ระบุชื่อจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควต้าการเรียกเก็บเงิน
- ระบบอาจลบบัญชีที่ไม่ระบุชื่อที่สร้างขึ้นหลังจากเปิดใช้การล้างข้อมูลอัตโนมัติโดยอัตโนมัติ เมื่อใดก็ได้หลังจากผ่านไป 30 วันนับจากวันที่สร้าง
- บัญชีที่ไม่ระบุชื่อที่มีอยู่จะมีสิทธิ์ถูกลบโดยอัตโนมัติหลังจากผ่านไป 30 วันนับจากวันที่ เปิดใช้การล้างข้อมูลอัตโนมัติ
- หากปิดการล้างข้อมูลอัตโนมัติ บัญชีที่ไม่ระบุชื่อที่กำหนดเวลาไว้ให้ลบจะยังคง กำหนดเวลาไว้ให้ลบ
- หากคุณ "อัปเกรด" บัญชีที่ไม่ระบุชื่อโดยลิงก์กับวิธีการลงชื่อเข้าใช้ใดวิธีการหนึ่ง ระบบจะไม่ลบบัญชีดังกล่าวโดยอัตโนมัติ
หากต้องการดูจำนวนผู้ใช้ที่จะได้รับผลกระทบก่อนเปิดใช้ฟีเจอร์นี้ และคุณได้
อัปเกรดโปรเจ็กต์เป็น Firebase Authentication with Identity Platform แล้ว คุณสามารถกรองตาม
is_anon ใน Cloud
Logging ได้
ขั้นตอนถัดไป
เมื่อผู้ใช้ตรวจสอบสิทธิ์กับ Firebase ได้แล้ว คุณสามารถควบคุมการเข้าถึง ข้อมูลในฐานข้อมูล Firebase ได้โดยใช้ กฎความปลอดภัยของ Firebase