คุณสามารถใช้ Firebase Authentication เพื่อสร้างและใช้บัญชีที่ไม่ระบุชื่อชั่วคราว ในการตรวจสอบสิทธิ์กับ Firebase บัญชีที่ไม่ระบุชื่อชั่วคราวเหล่านี้สามารถใช้เพื่ออนุญาตให้ผู้ใช้ที่ยังไม่ได้ลงชื่อสมัครใช้แอปของคุณทำงานกับข้อมูลที่ได้รับการปกป้องโดยกฎความปลอดภัย หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจลงชื่อสมัครใช้แอปของคุณ คุณสามารถ ลิงก์ข้อมูลเข้าสู่ระบบของผู้ใช้กับบัญชีที่ไม่ระบุชื่อเพื่อให้ผู้ใช้สามารถทำงานกับข้อมูลที่ได้รับการปกป้องต่อไปได้ใน เซสชันในอนาคต
ก่อนเริ่มต้น
- เพิ่ม Firebase ลงในโปรเจ็กต์ C++ ของคุณ
- หากยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้ดำเนินการจาก คอนโซลFirebase
-
เปิดใช้การตรวจสอบสิทธิ์แบบไม่ระบุชื่อ โดยทำดังนี้
- ในคอนโซล Firebase ให้ไปที่ ความปลอดภัย > การตรวจสอบสิทธิ์
- ในแท็บวิธีการลงชื่อเข้าใช้ ให้เปิดใช้ผู้ให้บริการการลงชื่อเข้าใช้แบบไม่ระบุชื่อ
- ไม่บังคับ: หากคุณอัปเกรดโปรเจ็กต์เป็นการ Firebase Authentication with 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::AppAppและ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 ของผู้ใช้ โทเค็นเพื่อการเข้าถึง Facebook หรืออีเมลและรหัสผ่าน รับ
Google Sign-Inauth::Credentialสำหรับผู้ให้บริการการตรวจสอบสิทธิ์ใหม่ โดยทำดังนี้ การเข้าสู่ระบบด้วย Facebookfirebase::auth::Credential credential = firebase::auth::GoogleAuthProvider::GetCredential(google_id_token, nullptr);
การลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านfirebase::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 Authentication with Identity Platform คุณสามารถ เปิดใช้การล้างข้อมูลอัตโนมัติในคอนโซล Firebase ได้ เมื่อเปิดใช้ฟีเจอร์นี้ คุณจะอนุญาตให้ Firebase ลบบัญชีที่ไม่ระบุชื่อที่มีอายุมากกว่า 30 วันโดยอัตโนมัติ ในโปรเจ็กต์ที่เปิดใช้การล้างข้อมูลอัตโนมัติ การตรวจสอบสิทธิ์แบบไม่ระบุชื่อจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควต้าการเรียกเก็บเงิน
- ระบบอาจลบบัญชีที่ไม่ระบุชื่อที่สร้างขึ้นหลังจากเปิดใช้การล้างข้อมูลอัตโนมัติโดยอัตโนมัติ เมื่อใดก็ได้หลังจากสร้างไปแล้ว 30 วัน
- บัญชีที่ไม่ระบุชื่อที่มีอยู่จะมีสิทธิ์ถูกลบโดยอัตโนมัติหลังจาก เปิดใช้การล้างข้อมูลอัตโนมัติไปแล้ว 30 วัน
- หากคุณปิดการล้างข้อมูลอัตโนมัติ บัญชีที่ไม่ระบุชื่อที่กำหนดเวลาไว้ให้ลบจะยังคง กำหนดเวลาไว้ให้ลบ
- หากคุณ "อัปเกรด" บัญชีที่ไม่ระบุชื่อโดยลิงก์กับวิธีการลงชื่อเข้าใช้ใดๆ บัญชีจะไม่ถูกลบโดยอัตโนมัติ
หากต้องการดูจำนวนผู้ใช้ที่จะได้รับผลกระทบก่อนเปิดใช้ฟีเจอร์นี้ และคุณได้
อัปเกรดโปรเจ็กต์เป็น Firebase Authentication with Identity Platform แล้ว คุณสามารถกรองตาม
is_anon ใน Cloud
Logging ได้
ขั้นตอนถัดไป
เมื่อผู้ใช้ตรวจสอบสิทธิ์กับ Firebase ได้แล้ว คุณสามารถควบคุมการเข้าถึง ข้อมูลในฐานข้อมูล Firebase ได้โดยใช้ กฎความปลอดภัยของ Firebase