คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อสร้างและใช้บัญชีชั่วคราวที่ไม่ระบุชื่อเพื่อตรวจสอบสิทธิ์กับ Firebase บัญชีที่ไม่ระบุตัวตนชั่วคราวเหล่านี้สามารถใช้เพื่ออนุญาตให้ผู้ใช้ที่ยังไม่ได้สมัครใช้งานแอปของคุณทำงานกับข้อมูลที่ได้รับการคุ้มครองตามกฎความปลอดภัย หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจสมัครใช้งานแอปของคุณ คุณสามารถ เชื่อมโยงข้อมูลประจำตัวในการลงชื่อเข้าใช้กับบัญชีที่ไม่ระบุตัวตน เพื่อให้พวกเขาสามารถทำงานกับข้อมูลที่ได้รับการคุ้มครองต่อไปได้ในเซสชันต่อๆ ไป
ก่อนที่คุณจะเริ่ม
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการการพึ่งพา Firebase
- ใน Xcode เมื่อโปรเจ็กต์แอปของคุณเปิดอยู่ ให้ไปที่ File > Add Package
- เมื่อได้รับแจ้ง ให้เพิ่มพื้นที่เก็บข้อมูล SDK แพลตฟอร์ม Firebase Apple:
- เลือกไลบรารี Firebase Authentication
- เพิ่มแฟล็ก
-ObjC
ไปยังส่วน Other Linker Flags ของการตั้งค่า build ของเป้าหมายของคุณ - เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการอ้างอิงของคุณโดยอัตโนมัติในเบื้องหลัง
https://github.com/firebase/firebase-ios-sdk.git
จากนั้น ทำตามขั้นตอนการกำหนดค่าบางอย่าง:
- หากคุณยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้เชื่อมต่อจาก คอนโซล Firebase
- เปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุชื่อ:
- ใน คอนโซล Firebase ให้เปิดส่วน การตรวจสอบสิทธิ์
- ในหน้า วิธีการลงชื่อเข้า ใช้ ให้เปิดใช้งานวิธีการลงชื่อเข้า ใช้แบบไม่ระบุชื่อ
- ทางเลือก : เปิดใช้งานการล้างข้อมูลอัตโนมัติ เมื่อคุณเปิดใช้งานการตั้งค่านี้ บัญชีที่ไม่ระบุชื่อที่มีอายุเกิน 30 วันจะถูกลบโดยอัตโนมัติ ในโปรเจ็กต์ที่เปิดใช้งานการล้างข้อมูลอัตโนมัติ การตรวจสอบสิทธิ์แบบไม่ระบุชื่อจะไม่นับรวมในการจำกัดการใช้งานหรือโควต้าการเรียกเก็บเงินอีกต่อไป ดู การล้างข้อมูลอัตโนมัติ
ตรวจสอบสิทธิ์กับ Firebase โดยไม่ระบุชื่อ
เมื่อผู้ใช้ที่ออกจากระบบใช้ฟีเจอร์ของแอปที่ต้องมีการตรวจสอบสิทธิ์กับ Firebase ให้ลงชื่อเข้าใช้ผู้ใช้โดยไม่ระบุชื่อโดยทำตามขั้นตอนต่อไปนี้:
- นำเข้าโมดูล
FirebaseCore
ในUIApplicationDelegate
ของคุณ รวมถึง โมดูล Firebase อื่นๆ ที่แอปของคุณมอบหมายใช้ ตัวอย่างเช่น หากต้องการใช้ Cloud Firestore และการตรวจสอบสิทธิ์ ให้ทำดังนี้SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
สวิฟท์
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
วัตถุประสงค์-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- กำหนดค่าอินสแตนซ์ที่ใช้ร่วมกันของ
FirebaseApp
ในapplication(_:didFinishLaunchingWithOptions:)
ของผู้รับมอบสิทธิ์แอปของคุณ:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
สวิฟท์
// Use Firebase library to configure APIs FirebaseApp.configure()
วัตถุประสงค์-C
// Use Firebase library to configure APIs [FIRApp configure];
- หากคุณใช้ SwiftUI คุณต้องสร้างผู้แทนแอปพลิเคชันและแนบไปกับโครงสร้าง
App
ของคุณผ่านUIApplicationDelegateAdaptor
หรือNSApplicationDelegateAdaptor
คุณต้องปิดใช้งานการสลับตัวแทนของแอปด้วย สำหรับข้อมูลเพิ่มเติม โปรดดู คำแนะนำ SwiftUISwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- เรียก
signInAnonymouslyWithCompletion:
วิธีการ:สวิฟท์
Auth.auth().signInAnonymously { authResult, error in // ... }
วัตถุประสงค์-C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- หากเมธอด
signInAnonymouslyWithCompletion:
เสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด คุณสามารถรับข้อมูลบัญชีผู้ใช้ที่ไม่ระบุชื่อได้จากออบเจ็กต์FIRAuthDataResult
:สวิฟท์
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
สวิฟท์
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
วัตถุประสงค์-C
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
เข้าสู่ระบบเฟสบุ๊ค
สวิฟท์
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
วัตถุประสงค์-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
ลงชื่อเข้าใช้อีเมล-รหัสผ่าน
สวิฟท์
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
วัตถุประสงค์-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
ส่งผ่านออบเจ็กต์
FIRAuthCredential
ไปยังเมธอดlinkWithCredential:completion:
ของผู้ใช้ที่ลงชื่อเข้าใช้:สวิฟท์
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