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