คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อสร้างและใช้บัญชีที่ไม่ระบุชื่อชั่วคราวเพื่อตรวจสอบสิทธิ์กับ Firebase บัญชีที่ไม่ระบุตัวตนชั่วคราวเหล่านี้สามารถใช้เพื่อให้ผู้ใช้ที่ยังไม่ได้สมัครใช้งานแอปของคุณทำงานกับข้อมูลที่ได้รับการคุ้มครองโดยกฎความปลอดภัย หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจลงชื่อสมัครใช้แอปของคุณ คุณสามารถ เชื่อมโยงข้อมูลรับรองการลงชื่อเข้าใช้ของพวกเขากับบัญชีที่ไม่ระบุตัวตน เพื่อให้พวกเขาสามารถทำงานกับข้อมูลที่ได้รับการป้องกันต่อไปได้ในเซสชันต่อๆ ไป
ก่อนจะเริ่ม
- เพิ่ม Firebase ให้กับโปรเจ็กต์ C++ ของ คุณ
- หากคุณยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้ดำเนินการจาก คอนโซล Firebase
- เปิดใช้งานการตรวจสอบแบบไม่ระบุชื่อ:
- ใน คอนโซล Firebase ให้เปิดส่วนการ ตรวจสอบสิทธิ์
- ในหน้า วิธีการลงชื่อเข้าใช้ ให้เปิดใช้งานวิธีการลงชื่อเข้าใช้แบบ ไม่ระบุชื่อ
- ไม่บังคับ : หากคุณได้อัปเกรดโปรเจ็กต์ของคุณเป็น Firebase Authentication ด้วย Identity Platform คุณสามารถเปิดใช้การล้างข้อมูลอัตโนมัติได้ เมื่อคุณเปิดใช้งานการตั้งค่านี้ บัญชีที่ไม่ระบุตัวตนที่เก่ากว่า 30 วันจะถูกลบโดยอัตโนมัติ ในโครงการที่เปิดใช้งานการล้างข้อมูลอัตโนมัติ การรับรองความถูกต้องแบบไม่ระบุตัวตนจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควตาการเรียกเก็บเงินอีกต่อไป โปรดดู ที่ การล้างข้อมูลอัตโนมัติ
ตรวจสอบสิทธิ์ด้วย Firebase โดยไม่เปิดเผยตัวตน
เมื่อผู้ใช้ที่ออกจากระบบใช้ฟีเจอร์แอปที่ต้องมีการตรวจสอบสิทธิ์ด้วย Firebase ให้ลงชื่อเข้าใช้ผู้ใช้โดยไม่ระบุตัวตนโดยทำตามขั้นตอนต่อไปนี้
คลาสAuth
เป็นเกตเวย์สำหรับการเรียก API ทั้งหมด- เพิ่มไฟล์ส่วนหัว Auth และ App:
#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()); } }หรือหากโปรแกรมของคุณเป็นเหตุการณ์ที่ขับเคลื่อนด้วย คุณอาจต้องการ เพื่อ ลงทะเบียนโทรกลับในอนาคต
แปลงบัญชีที่ไม่ระบุตัวตนเป็นบัญชีถาวร
เมื่อผู้ใช้ที่ไม่ระบุชื่อลงชื่อสมัครใช้แอปของคุณ คุณอาจต้องการอนุญาตให้พวกเขาทำงานต่อด้วยบัญชีใหม่ของพวกเขา ตัวอย่างเช่น คุณอาจต้องการทำให้สินค้าที่ผู้ใช้เพิ่มลงในตะกร้าสินค้าก่อนที่จะลงชื่อสมัครใช้ในใหม่ ตะกร้าสินค้าของบัญชี โดยทำตามขั้นตอนต่อไปนี้:
- เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ทำตามขั้นตอนการลงชื่อเข้าใช้สำหรับผู้ให้บริการการตรวจสอบสิทธิ์ของผู้ใช้ให้สมบูรณ์ แต่ไม่รวมการเรียก
Auth::SignInWith
วิธีใดวิธีหนึ่ง ตัวอย่างเช่น รับโทเค็น Google ID ของผู้ใช้ โทเค็นการเข้าถึง Facebook หรือที่อยู่อีเมลและรหัสผ่าน รับการ
ลงชื่อเข้าใช้ Googleauth::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 Authentication ด้วย Identity Platform คุณสามารถกรองโดย is_anon
ใน Cloud Logging
ขั้นตอนถัดไป
ขณะนี้ผู้ใช้สามารถตรวจสอบสิทธิ์กับ Firebase ได้แล้ว คุณสามารถควบคุมการเข้าถึงข้อมูลในฐานข้อมูล Firebase โดยใช้กฎ ของ Firebase