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

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

ก่อนจะเริ่ม

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

ตรวจสอบสิทธิ์ด้วย 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 ได้แล้ว คุณสามารถควบคุมการเข้าถึงข้อมูลในฐานข้อมูล Firebase ได้โดยใช้ กฎของ Firebase