Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

ก่อนจะเริ่ม

  1. เพิ่ม Firebase ให้กับโปรเจ็กต์ C++ ของ คุณ
  2. หากคุณยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้ดำเนินการจาก คอนโซล Firebase
  3. เปิดใช้งานการตรวจสอบแบบไม่ระบุชื่อ:
    1. ใน คอนโซล Firebase ให้เปิดส่วนการ ตรวจสอบสิทธิ์
    2. ในหน้า วิธีการลงชื่อเข้าใช้ ให้เปิดใช้งานวิธีการลงชื่อเข้าใช้แบบ ไม่ระบุชื่อ
    3. ไม่บังคับ : หากคุณได้อัปเกรดโปรเจ็กต์ของคุณเป็น Firebase Authentication ด้วย 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::User*> result = auth->SignInAnonymously();
    
  • หากโปรแกรมของคุณมีลูปการอัพเดทที่ทำงานเป็นประจำ (พูดที่ 30 หรือ 60 ครั้งต่อวินาที) คุณสามารถตรวจสอบผลลัพธ์ได้หนึ่งครั้งต่อการอัพเดทด้วย Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    หรือหากโปรแกรมของคุณเป็นเหตุการณ์ที่ขับเคลื่อนด้วย คุณอาจต้องการ เพื่อ ลงทะเบียนโทรกลับในอนาคต
  • แปลงบัญชีที่ไม่ระบุตัวตนเป็นบัญชีถาวร

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

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

      ลงชื่อเข้าใช้ Google
      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::User*> result =
          current_user->LinkWithCredential(credential);
      

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

    ทำความสะอาดอัตโนมัติ

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

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

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

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

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