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

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

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

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

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

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

คลาส Auth เป็นเกตเวย์สำหรับการเรียก API ทั้งหมด
  1. เพิ่มไฟล์ส่วนหัว Auth และ App ดังนี้
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. ในโค้ดเริ่มต้น ให้สร้าง firebase::App
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. รับชั้นเรียน firebase::auth::Auth สำหรับ firebase::App มีการแมปแบบหนึ่งต่อหนึ่งระหว่าง App และ Auth
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • โทร Auth::SignInAnonymously
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymously();
    
  • หากโปรแกรมของคุณมีลูปการอัปเดตที่ทำงานเป็นประจำ (เช่น 30 หรือ 60 วินาที ครั้งต่อวินาที) คุณสามารถตรวจสอบผลลัพธ์ได้ 1 ครั้งต่อการอัปเดตด้วย Auth::SignInAnonymouslyLastResult: วันที่
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::AuthResult auth_result = *result.result();
        printf("Sign in succeeded for `%s`\n",
               auth_result.user.display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    หรือ ถ้าโปรแกรมของคุณมีการจัดกิจกรรม คุณอาจต้องการ ลงทะเบียน Callback ใน อนาคต
  • แปลงบัญชีที่ไม่ระบุชื่อเป็นบัญชีถาวร

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

    1. เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ทําตามขั้นตอนการลงชื่อเข้าใช้สําหรับ ผู้ให้บริการการตรวจสอบสิทธิ์สูงสุด แต่ไม่นับรวมการเรียกหนึ่งใน Auth::SignInWith วิธี เช่น รับโทเค็นรหัส Google ของผู้ใช้ โทเค็นเพื่อการเข้าถึงของ Facebook หรืออีเมลและรหัสผ่าน
    2. รับ auth::Credential สำหรับผู้ให้บริการตรวจสอบสิทธิ์รายใหม่:

      Google Sign-In
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      การเข้าสู่ระบบ Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      การลงชื่อเข้าใช้ด้วยอีเมลด้วยรหัสผ่าน
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. ส่งออบเจ็กต์ auth::Credential ไปยังผู้ใช้ที่ลงชื่อเข้าใช้ เมธอด LinkWithCredential:

      // Link the new credential to the currently active user.
      firebase::auth::User current_user = auth->current_user();
      firebase::Future<firebase::auth::AuthResult> result =
          current_user.LinkWithCredential(credential);
      

    หากโทรหา LinkWithCredential สำเร็จ บัญชีใหม่ของผู้ใช้จะดำเนินการได้ เข้าถึงข้อมูล Firebase ของบัญชีที่ไม่ระบุตัวตน

    การล้างข้อมูลอัตโนมัติ

    หากอัปเกรดโปรเจ็กต์เป็น Firebase Authentication with Identity Platform แล้ว คุณจะทำสิ่งต่อไปนี้ได้ เปิดใช้การทำความสะอาดอัตโนมัติในคอนโซล Firebase เมื่อคุณเปิดใช้งานฟีเจอร์นี้ คุณจะอนุญาตให้ Firebase จะลบบัญชีที่ไม่ระบุตัวตนซึ่งมีอายุมากกว่า 30 วันโดยอัตโนมัติ ในโปรเจ็กต์ที่มีอัตโนมัติ เปิดใช้การล้างแล้ว การตรวจสอบสิทธิ์แบบไม่ระบุชื่อจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควต้าการเรียกเก็บเงิน

    • บัญชีที่ไม่ระบุตัวตนใดๆ ที่สร้างขึ้นหลังจากเปิดใช้การล้างอัตโนมัติอาจดำเนินการโดยอัตโนมัติ ลบเมื่อใดก็ได้หลังจากสร้าง 30 วัน
    • บัญชีที่ไม่ระบุตัวตนที่มีอยู่จะมีสิทธิ์ได้รับการลบโดยอัตโนมัติ 30 วันหลังจากนี้ กำลังเปิดใช้การทำความสะอาดอัตโนมัติ
    • หากคุณปิดการล้างข้อมูลอัตโนมัติ บัญชีที่ไม่ระบุตัวตนซึ่งกำหนดเวลาให้ลบจะยังคงอยู่ มีกำหนดลบแล้ว
    • หากคุณ "อัปเกรด" บัญชีที่ไม่ระบุตัวตนโดยการเชื่อมโยงบัญชีกับวิธีการลงชื่อเข้าใช้ บัญชีดังกล่าวจะ ไม่ถูกลบโดยอัตโนมัติ

    หากคุณต้องการดูจำนวนผู้ใช้ที่จะได้รับผลกระทบก่อนที่คุณจะเปิดใช้งานฟีเจอร์นี้ และ อัปเกรดโปรเจ็กต์เป็น Firebase Authentication with Identity Platform แล้ว คุณสามารถกรองตาม is_anon ในระบบคลาวด์ การบันทึก

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

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