ตรวจสอบสิทธิ์ด้วย Firebase โดยไม่ระบุชื่อโดยใช้ JavaScript

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

ก่อนเริ่มต้น

  1. เพิ่ม Firebase ลงในโปรเจ็กต์ JavaScript
  2. หากยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้ดำเนินการจาก คอนโซล Firebase
  3. เปิดใช้งานการตรวจสอบสิทธิ์แบบไม่ระบุชื่อ:
    1. ในคอนโซล Firebase ให้เปิดส่วน Auth
    2. ในหน้าวิธีการลงชื่อเข้าใช้ ให้เปิดใช้ตัวเลือกไม่ระบุตัวตน วิธีลงชื่อเข้าใช้
    3. ไม่บังคับ: หากอัปเกรดโปรเจ็กต์เป็น Firebase Authentication with Identity Platform คุณสามารถเปิดใช้การล้างข้อมูลอัตโนมัติ วันและเวลา เมื่อคุณเปิดใช้การตั้งค่านี้ ระบบจะสร้างบัญชีที่ไม่ระบุชื่อและมีอายุเกิน 30 วันโดยอัตโนมัติ ลบแล้ว ในโปรเจ็กต์ที่เปิดใช้การล้างข้อมูลอัตโนมัติ การตรวจสอบสิทธิ์แบบไม่ระบุตัวตนจะไม่ทำสิ่งต่อไปนี้ จะนับรวมในขีดจำกัดการใช้งานหรือโควต้าการเรียกเก็บเงิน โปรดดู การล้างข้อมูลอัตโนมัติ

ตรวจสอบสิทธิ์ด้วย Firebase แบบไม่ระบุตัวตน

เมื่อผู้ใช้ที่ออกจากระบบใช้ฟีเจอร์แอปที่ต้องมีการตรวจสอบสิทธิ์ด้วย Firebase ให้ลงชื่อเข้าใช้ผู้ใช้แบบไม่ระบุตัวตนโดยทำตามขั้นตอนต่อไปนี้

  1. เรียกเมธอด 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;
        // ...
      });
    นอกจากนี้ คุณจะสามารถตรวจหาและจัดการข้อผิดพลาดได้ด้วย โปรดดูรายการรหัสข้อผิดพลาดในเอกสารข้อมูลอ้างอิงการตรวจสอบสิทธิ์
  2. หากเมธอด signInAnonymously เสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด ผู้สังเกตการณ์ที่ลงทะเบียนใน 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
        // ...
      }
    });

แปลงบัญชีที่ไม่ระบุชื่อเป็นบัญชีถาวร

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

  1. เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ทําตามขั้นตอนการลงชื่อเข้าใช้สําหรับ ผู้ให้บริการการตรวจสอบสิทธิ์สูงสุด แต่ไม่นับรวมการเรียกหนึ่งใน Auth.signInWith วิธี เช่น รับโทเค็นรหัส Google ของผู้ใช้ โทเค็นเพื่อการเข้าถึงของ Facebook หรืออีเมลและรหัสผ่าน
  2. รับ 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);
  3. ส่งออบเจ็กต์ 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 ในระบบคลาวด์ การบันทึก

ขั้นตอนถัดไป

เมื่อผู้ใช้ตรวจสอบสิทธิ์กับ Firebase แล้ว คุณจึงควบคุมสิทธิ์เข้าถึง ในฐานข้อมูล Firebase ของคุณโดยใช้ กฎ Firebase