คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อสร้างและใช้บัญชีชั่วคราวที่ไม่ระบุตัวตน ในการตรวจสอบสิทธิ์กับ Firebase คุณสามารถใช้บัญชีชั่วคราวที่ไม่ระบุตัวตนเหล่านี้เพื่ออนุญาตให้ผู้ใช้ที่ยังไม่ได้ลงชื่อสมัครใช้แอปของคุณทำงานกับข้อมูลที่ได้รับการคุ้มครองโดยกฎความปลอดภัยได้ หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจลงชื่อสมัครใช้แอปของคุณ คุณสามารถลิงก์ข้อมูลเข้าสู่ระบบของผู้ใช้กับบัญชีที่ไม่ระบุชื่อ เพื่อให้ผู้ใช้ทำงานกับข้อมูลที่ได้รับการคุ้มครองในเซสชันในอนาคตต่อไปได้
ก่อนเริ่มต้น
- เพิ่ม Firebase ไปยังโปรเจ็กต์ C++
- หากยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้เชื่อมต่อจากคอนโซล Firebase
- วิธีเปิดใช้การตรวจสอบสิทธิ์แบบไม่ระบุชื่อ
- ในคอนโซล Firebase ให้เปิดส่วนการตรวจสอบสิทธิ์
- ในหน้าวิธีการลงชื่อเข้าใช้ ให้เปิดใช้วิธีการลงชื่อเข้าใช้แบบไม่ระบุตัวตน
- ไม่บังคับ: หากอัปเกรดโปรเจ็กต์เป็นการตรวจสอบสิทธิ์ Firebase ด้วย Identity Platform แล้ว คุณจะเปิดใช้การทำความสะอาดอัตโนมัติได้ เมื่อคุณเปิดใช้การตั้งค่านี้ ระบบจะลบบัญชีที่ไม่ระบุตัวตนที่เก่ากว่า 30 วันโดยอัตโนมัติ ในโปรเจ็กต์ที่เปิดใช้การล้างข้อมูลอัตโนมัติ การตรวจสอบสิทธิ์แบบไม่ระบุชื่อจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควต้าการเรียกเก็บเงินอีกต่อไป โปรดดูหัวข้อการล้างข้อมูลอัตโนมัติ
ตรวจสอบสิทธิ์ด้วย Firebase แบบไม่ระบุตัวตน
เมื่อผู้ใช้ที่ออกจากระบบใช้ฟีเจอร์แอปที่ต้องมีการตรวจสอบสิทธิ์ด้วย Firebase ให้ลงชื่อเข้าใช้ผู้ใช้โดยไม่ระบุชื่อโดยทําตามขั้นตอนต่อไปนี้
คลาสAuth
เป็นเกตเวย์สำหรับการเรียก API ทั้งหมด
- เพิ่มไฟล์ส่วนหัว "การตรวจสอบสิทธิ์และแอป" โดยทำดังนี้
#include "firebase/app.h" #include "firebase/auth.h"
- สร้างชั้นเรียน
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__)
- รับชั้นเรียน
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();
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 ใน อนาคต
แปลงบัญชีที่ไม่ระบุชื่อเป็นบัญชีถาวร
เมื่อผู้ใช้ที่ไม่ระบุชื่อลงชื่อสมัครใช้แอปของคุณ คุณอาจต้องการอนุญาตให้ผู้ใช้เหล่านั้นทำงานต่อด้วยบัญชีใหม่ของตน เช่น คุณอาจต้องการทำให้สินค้าที่ผู้ใช้เพิ่มลงในรถเข็นช็อปปิ้งก่อนที่จะลงชื่อสมัครใช้จะมีอยู่ในรถเข็นช็อปปิ้งของบัญชีใหม่ โดยทำตามขั้นตอนต่อไปนี้
- เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ทำตามขั้นตอนการลงชื่อเข้าใช้สำหรับผู้ให้บริการตรวจสอบสิทธิ์ของผู้ใช้จนเสร็จสิ้น (แต่ไม่รวมการเรียกใช้เมธอดของ
Auth::SignInWith
) เช่น รับโทเค็น Google ID, โทเค็นเพื่อการเข้าถึงของ Facebook, อีเมลและรหัสผ่านของผู้ใช้ รับ
Google Sign-Inauth::Credential
สำหรับผู้ให้บริการตรวจสอบสิทธิ์รายใหม่:firebase::auth::Credential credential = firebase::auth::GoogleAuthProvider::GetCredential(google_id_token, nullptr);
การเข้าสู่ระบบ Facebookfirebase::auth::Credential credential = firebase::auth::FacebookAuthProvider::GetCredential(access_token);
การลงชื่อเข้าใช้ด้วยอีเมลด้วยรหัสผ่านfirebase::auth::Credential credential = firebase::auth::EmailAuthProvider::GetCredential(email, password);
ส่งออบเจ็กต์
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 ด้วย Identity Platform แล้ว คุณจะเปิดใช้การล้างอัตโนมัติได้ในคอนโซล Firebase การเปิดใช้ฟีเจอร์นี้เป็นการอนุญาตให้ Firebase ลบบัญชีที่ไม่ระบุตัวตนซึ่งมีอายุมากกว่า 30 วันโดยอัตโนมัติ ในโปรเจ็กต์ที่เปิดใช้การล้างข้อมูลอัตโนมัติ การตรวจสอบสิทธิ์แบบไม่ระบุชื่อจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควต้าการเรียกเก็บเงิน
- ระบบอาจลบบัญชีที่ไม่ระบุตัวตนที่สร้างหลังจากเปิดใช้การล้างอัตโนมัติแล้วโดยอัตโนมัติเมื่อผ่านไป 30 วันหลังการสร้าง
- บัญชีที่ไม่ระบุชื่อที่มีอยู่จะมีสิทธิ์ได้รับการลบอัตโนมัติ 30 วันหลังจากเปิดใช้การล้างอัตโนมัติ
- หากคุณปิดการล้างข้อมูลอัตโนมัติ บัญชีที่ไม่ระบุตัวตนซึ่งกำหนดเวลาให้ลบจะยังคงกำหนดเวลาลบต่อไป
- หากคุณ "อัปเกรด" บัญชีที่ไม่ระบุตัวตนด้วยการเชื่อมโยงกับวิธีการลงชื่อเข้าใช้ใดๆ บัญชีดังกล่าวจะไม่ถูกลบโดยอัตโนมัติ
หากต้องการดูจำนวนผู้ใช้ที่จะได้รับผลกระทบก่อนเปิดใช้ฟีเจอร์นี้ และคุณได้อัปเกรดโปรเจ็กต์เป็นการตรวจสอบสิทธิ์ Firebase ด้วย Identity Platform แล้ว ให้กรองตาม
is_anon
ในการบันทึกในระบบคลาวด์
ขั้นตอนถัดไป
เมื่อผู้ใช้ตรวจสอบสิทธิ์กับ Firebase แล้ว คุณจึงควบคุมสิทธิ์การเข้าถึงข้อมูลในฐานข้อมูล Firebase ได้โดยใช้ กฎ Firebase