获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

ตรวจสอบสิทธิ์กับ Firebase โดยไม่เปิดเผยตัวตนบนแพลตฟอร์ม Apple

คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อสร้างและใช้บัญชีที่ไม่ระบุชื่อชั่วคราวเพื่อตรวจสอบสิทธิ์กับ Firebase บัญชีที่ไม่ระบุตัวตนชั่วคราวเหล่านี้สามารถใช้เพื่อให้ผู้ใช้ที่ยังไม่ได้สมัครใช้งานแอปของคุณทำงานกับข้อมูลที่ได้รับการคุ้มครองโดยกฎความปลอดภัย หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจลงชื่อสมัครใช้แอปของคุณ คุณสามารถ เชื่อมโยงข้อมูลรับรองการลงชื่อเข้าใช้ของพวกเขากับบัญชีที่ไม่ระบุตัวตน เพื่อให้พวกเขาสามารถทำงานกับข้อมูลที่ได้รับการป้องกันต่อไปได้ในเซสชันต่อๆ ไป

ก่อนจะเริ่ม

ใช้ Swift Package Manager เพื่อติดตั้งและจัดการการขึ้นต่อกันของ Firebase

  1. ใน Xcode เมื่อโปรเจ็กต์แอปของคุณเปิดอยู่ ให้ไปที่ File > Add Packages
  2. เมื่อได้รับแจ้ง ให้เพิ่มที่เก็บ SDK ของแพลตฟอร์ม Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. เลือกไลบรารีการตรวจสอบสิทธิ์ Firebase
  5. เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการพึ่งพาของคุณในพื้นหลังโดยอัตโนมัติ

ถัดไป ดำเนินการขั้นตอนการกำหนดค่าบางอย่าง:

  1. หากคุณยังไม่ได้เชื่อมต่อแอปกับโปรเจ็กต์ Firebase ให้ดำเนินการจาก คอนโซล Firebase
  2. เปิดใช้งานการตรวจสอบแบบไม่ระบุชื่อ:
    1. ใน คอนโซล Firebase ให้เปิดส่วนการ ตรวจสอบสิทธิ์
    2. ในหน้า วิธีการลงชื่อเข้าใช้ ให้เปิดใช้งานวิธีการลงชื่อเข้าใช้แบบ ไม่ระบุชื่อ
    3. ทางเลือก : เปิดใช้งานการล้างข้อมูลอัตโนมัติ เมื่อคุณเปิดใช้งานการตั้งค่านี้ บัญชีที่ไม่ระบุตัวตนที่เก่ากว่า 30 วันจะถูกลบโดยอัตโนมัติ ในโครงการที่เปิดใช้งานการล้างข้อมูลอัตโนมัติ การรับรองความถูกต้องแบบไม่ระบุตัวตนจะไม่นับรวมในขีดจำกัดการใช้งานหรือโควตาการเรียกเก็บเงินอีกต่อไป โปรดดู ที่ การล้างข้อมูลอัตโนมัติ

ตรวจสอบสิทธิ์ด้วย Firebase โดยไม่เปิดเผยตัวตน

เมื่อผู้ใช้ที่ออกจากระบบใช้ฟีเจอร์แอปที่ต้องมีการตรวจสอบสิทธิ์ด้วย Firebase ให้ลงชื่อเข้าใช้ผู้ใช้โดยไม่ระบุชื่อโดยทำตามขั้นตอนต่อไปนี้

  1. นำเข้าโมดูล FirebaseCore ใน UIApplicationDelegate ของคุณ รวมถึง โมดูล Firebase อื่นๆ ที่ผู้รับมอบสิทธิ์แอปของคุณใช้ ตัวอย่างเช่น ในการใช้ Cloud Firestore และการตรวจสอบสิทธิ์:

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    วัตถุประสงค์-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. กำหนดค่าอินสแตนซ์ที่ใช้ร่วมกันของ FirebaseApp ใน application(_:didFinishLaunchingWithOptions:) ของผู้รับมอบสิทธิ์แอปของคุณ:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    วัตถุประสงค์-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. เรียก signInAnonymouslyWithCompletion: method:

    Swift

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }
    

    วัตถุประสงค์-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  4. หาก 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;
    

แปลงบัญชีที่ไม่ระบุตัวตนเป็นบัญชีถาวร

เมื่อผู้ใช้ที่ไม่ระบุชื่อลงชื่อสมัครใช้แอปของคุณ คุณอาจต้องการอนุญาตให้พวกเขาทำงานต่อด้วยบัญชีใหม่ของพวกเขา ตัวอย่างเช่น คุณอาจต้องการทำให้สินค้าที่ผู้ใช้เพิ่มลงในตะกร้าสินค้าก่อนที่จะลงชื่อสมัครใช้ใหม่ ตะกร้าสินค้าของบัญชี โดยทำตามขั้นตอนต่อไปนี้:

  1. เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ทำตามขั้นตอนการลงชื่อเข้าใช้สำหรับผู้ให้บริการการตรวจสอบสิทธิ์ของผู้ใช้ให้เสร็จสิ้น แต่ไม่รวมการเรียกใช้ FIRAuth.signInWith วิธีใดวิธีหนึ่ง ตัวอย่างเช่น รับโทเค็น Google ID ของผู้ใช้ โทเค็นการเข้าถึง Facebook หรือที่อยู่อีเมลและรหัสผ่าน
  2. รับ 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];
    
  3. ส่งผ่านวัตถุ 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