คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อสร้างและใช้บัญชีที่ไม่ระบุชื่อชั่วคราวเพื่อตรวจสอบสิทธิ์กับ Firebase บัญชีที่ไม่ระบุตัวตนชั่วคราวเหล่านี้สามารถใช้เพื่อให้ผู้ใช้ที่ยังไม่ได้สมัครใช้งานแอปของคุณทำงานกับข้อมูลที่ได้รับการคุ้มครองโดยกฎความปลอดภัย หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจลงชื่อสมัครใช้แอปของคุณ คุณสามารถ เชื่อมโยงข้อมูลรับรองการลงชื่อเข้าใช้ของพวกเขากับบัญชีที่ไม่ระบุตัวตน เพื่อให้พวกเขาสามารถทำงานกับข้อมูลที่ได้รับการป้องกันต่อไปได้ในเซสชันต่อๆ ไป
ก่อนจะเริ่ม
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการการขึ้นต่อกันของ Firebase
- ใน Xcode เมื่อโปรเจ็กต์แอปของคุณเปิดอยู่ ให้ไปที่ File > Add Packages
- เมื่อได้รับแจ้ง ให้เพิ่มที่เก็บ SDK ของแพลตฟอร์ม Firebase Apple:
- เลือกไลบรารีการตรวจสอบสิทธิ์ Firebase
- เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการพึ่งพาของคุณในพื้นหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk
ถัดไป ดำเนินการขั้นตอนการกำหนดค่าบางอย่าง:
- หากคุณยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้ดำเนินการจาก คอนโซล Firebase
- เปิดใช้งานการตรวจสอบแบบไม่ระบุชื่อ:
- ใน คอนโซล Firebase ให้เปิดส่วนการ ตรวจสอบสิทธิ์
- ในหน้า วิธีการลงชื่อเข้าใช้ ให้เปิดใช้งานวิธีการลงชื่อเข้าใช้แบบ ไม่ระบุชื่อ
- ทางเลือก : เปิดใช้งานการล้างข้อมูลอัตโนมัติ เมื่อคุณเปิดใช้งานการตั้งค่านี้ บัญชีที่ไม่ระบุตัวตนที่เก่ากว่า 30 วันจะถูกลบโดยอัตโนมัติ ในโครงการที่เปิดใช้งานการล้างข้อมูลอัตโนมัติ การรับรองความถูกต้องแบบไม่ระบุตัวตนจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควตาการเรียกเก็บเงินอีกต่อไป โปรดดู ที่ การล้างข้อมูลอัตโนมัติ
ตรวจสอบสิทธิ์ด้วย Firebase โดยไม่เปิดเผยตัวตน
เมื่อผู้ใช้ที่ออกจากระบบใช้ฟีเจอร์แอปที่ต้องมีการตรวจสอบสิทธิ์ด้วย Firebase ให้ลงชื่อเข้าใช้ผู้ใช้โดยไม่ระบุตัวตนโดยทำตามขั้นตอนต่อไปนี้
- นำเข้าโมดูล
FirebaseCore
ในUIApplicationDelegate
ของคุณ รวมถึง โมดูล Firebase อื่นๆ ที่ผู้รับมอบสิทธิ์แอปของคุณใช้ ตัวอย่างเช่น ในการใช้ Cloud Firestore และการตรวจสอบสิทธิ์:Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
วัตถุประสงค์-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- กำหนดค่าอินสแตนซ์ที่ใช้ร่วมกันของ
FirebaseApp
โดยทั่วไปในเครื่องมือเริ่มต้นของApp
ปหรือวิธีการของapplication(_:didFinishLaunchingWithOptions:)
ของแอปหรือผู้รับมอบสิทธิ์แอป:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
วัตถุประสงค์-C
// Use Firebase library to configure APIs [FIRApp configure];
- เรียก
signInAnonymouslyWithCompletion:
method:Swift
Auth.auth().signInAnonymously { authResult, error in // ... }
วัตถุประสงค์-C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- หาก
signInAnonymouslyWithCompletion:
เสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด คุณสามารถรับข้อมูลบัญชีผู้ใช้ที่ไม่ระบุชื่อจากอ็อบเจ็กต์FIRAuthDataResult
:Swift
guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
วัตถุประสงค์-C
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
แปลงบัญชีที่ไม่ระบุตัวตนเป็นบัญชีถาวร
เมื่อผู้ใช้ที่ไม่ระบุชื่อลงชื่อสมัครใช้แอปของคุณ คุณอาจต้องการอนุญาตให้พวกเขาทำงานต่อด้วยบัญชีใหม่ของพวกเขา ตัวอย่างเช่น คุณอาจต้องการทำให้สินค้าที่ผู้ใช้เพิ่มลงในตะกร้าสินค้าก่อนที่จะลงชื่อสมัครใช้ในใหม่ ตะกร้าสินค้าของบัญชี โดยทำตามขั้นตอนต่อไปนี้:
- เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ทำตามขั้นตอนการลงชื่อเข้าใช้สำหรับผู้ให้บริการการตรวจสอบสิทธิ์ของผู้ใช้ให้เสร็จสิ้น แต่ไม่รวมการเรียกใช้
FIRAuth.signInWith
วิธีใดวิธีหนึ่ง ตัวอย่างเช่น รับโทเค็น Google ID ของผู้ใช้ โทเค็นการเข้าถึง Facebook หรือที่อยู่อีเมลและรหัสผ่าน รับ
FIRAuthCredential
สำหรับผู้ให้บริการตรวจสอบสิทธิ์ใหม่:ลงชื่อเข้าใช้ Google
Swift
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
วัตถุประสงค์-C
GIDAuthentication *authentication = user.authentication; FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken accessToken:authentication.accessToken];
เข้าสู่ระบบ Facebook
Swift
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
วัตถุประสงค์-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
อีเมลรหัสผ่านลงชื่อเข้าใช้
Swift
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
วัตถุประสงค์-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
ส่งผ่านวัตถุ
FIRAuthCredential
ไปยังlinkWithCredential:completion:
ของผู้ใช้ที่ลงชื่อเข้าใช้เมธอด:Swift
user.link(with: credential) { authResult, error in // ... } }
วัตถุประสงค์-C
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
หากการเรียก linkWithCredential:completion:
สำเร็จ บัญชีใหม่ของผู้ใช้จะสามารถเข้าถึงข้อมูล Firebase ของบัญชีที่ไม่ระบุตัวตนได้
ทำความสะอาดอัตโนมัติ
เมื่อคุณเปิดใช้งานการล้างข้อมูลอัตโนมัติในคอนโซล Firebase บัญชีที่ไม่ระบุตัวตนที่เก่ากว่า 30 วันจะถูกลบโดยอัตโนมัติ การเปิดใช้งานการตั้งค่านี้ช่วยป้องกันไม่ให้ฐานข้อมูลผู้ใช้ของคุณกรอกด้วยบัญชีที่ไม่ได้ใช้ ในโครงการที่เปิดใช้งานการล้างข้อมูลอัตโนมัติ การรับรองความถูกต้องแบบไม่ระบุตัวตนจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควตาการเรียกเก็บเงิน
- บัญชีที่ไม่ระบุตัวตนใดๆ ที่สร้างขึ้นหลังจากเปิดใช้งานการล้างข้อมูลอัตโนมัติจะถูกลบภายใน 30 วันหลังจากสร้าง
- บัญชีที่ไม่ระบุตัวตนที่สร้างก่อนเปิดใช้งานการล้างข้อมูลอัตโนมัติจะถูกลบออกประมาณ 30 วันหลังจากเปิดใช้งานการล้างข้อมูลอัตโนมัติ
- หากคุณปิดการล้างข้อมูลอัตโนมัติ บัญชีที่ไม่ระบุชื่อที่กำหนดให้ลบจะยังคงอยู่ในกำหนดการที่จะลบ
- หากคุณ "อัปเกรด" บัญชีที่ไม่ระบุตัวตนด้วยการเชื่อมโยงกับวิธีการลงชื่อเข้าใช้ใดๆ บัญชีจะไม่ถูกลบโดยอัตโนมัติ
หากคุณต้องการดูจำนวนผู้ใช้ที่จะได้รับผลกระทบก่อนที่คุณจะเปิดใช้งานคุณลักษณะนี้ และคุณได้อัปเกรดโปรเจ็กต์ของคุณเป็น Firebase Authentication ด้วย Identity Platform คุณสามารถกรองโดย is_anon
ใน Cloud Logging
ขั้นตอนถัดไป
ขณะนี้ผู้ใช้สามารถตรวจสอบสิทธิ์กับ Firebase ได้แล้ว คุณสามารถควบคุมการเข้าถึงข้อมูลในฐานข้อมูล Firebase ของคุณโดยใช้ กฎของ Firebase