Bergabunglah dengan kami secara langsung dan online di Firebase Summit pada 18 Oktober 2022. Pelajari cara Firebase dapat membantu Anda mempercepat pengembangan aplikasi, merilis aplikasi dengan percaya diri, dan menentukan skala dengan mudah. Daftar sekarang

Melakukan Autentikasi dengan Firebase secara Anonim di Platform Apple

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat menggunakan Firebase Authentication untuk membuat dan menggunakan akun anonim sementara untuk melakukan autentikasi dengan Firebase. Dengan akun anonim sementara ini, pengguna yang belum mendaftar ke aplikasi Anda dapat menggunakan data yang dilindungi oleh aturan keamanan. Jika pengguna anonim memutuskan untuk mendaftar ke aplikasi Anda, tautkan kredensial login mereka ke akun anonim tersebut agar mereka dapat terus menggunakan data yang dilindungi tersebut pada sesi-sesi selanjutnya.

Sebelum memulai

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

  1. Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, buka File > Add Packages.
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Pilih library Firebase Authentication.
  5. Setelah selesai, Xcode akan otomatis mulai me-resolve dan mendownload dependensi Anda di latar belakang.

Selanjutnya, lakukan beberapa langkah konfigurasi:

  1. Jika belum menghubungkan aplikasi ke project Firebase, lakukanlah dari Firebase console.
  2. Aktifkan autentikasi anonim:
    1. Di Firebase console, buka bagian Authentication.
    2. Di halaman Sign-in Methods, aktifkan metode login Anonymous.
    3. Opsional: Aktifkan pembersihan otomatis. Saat setelan ini diaktifkan, akun anonim yang berusia lebih dari 30 hari akan otomatis dihapus. Dalam project yang mengaktifkan pembersihan otomatis, autentikasi anonim tidak akan lagi diperhitungkan dalam batas penggunaan atau kuota penagihan. Lihat Pembersihan otomatis.

Melakukan autentikasi dengan Firebase secara anonim

Ketika pengguna yang tidak login menggunakan fitur aplikasi yang mengharuskan autentikasi dengan Firebase, buat pengguna tersebut login secara anonim dengan mengikuti langkah berikut:

  1. Impor modul FirebaseCore dalam UIApplicationDelegate Anda, serta semua modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurasikan instance bersama FirebaseApp, yang biasanya ada dalam penginisialisasi App atau metode application(_:didFinishLaunchingWithOptions:) delegasi aplikasi:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Panggil metode signInAnonymouslyWithCompletion::

    Swift

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

    Objective-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  4. Jika metode signInAnonymouslyWithCompletion: selesai tanpa error, Anda bisa mendapatkan data akun pengguna anonim dari objek 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;
    

Mengubah akun anonim menjadi akun permanen

Ketika pengguna anonim mendaftar ke aplikasi, Anda dapat mengizinkan mereka melanjutkan aktivitas dengan akun yang baru dibuat. Misalnya, Anda dapat mempertahankan item yang ditambahkan pengguna sebelum mendaftar agar tetap berada di keranjang belanja pada akun baru mereka. Caranya, ikuti langkah-langkah berikut:

  1. Ketika pengguna mendaftar, selesaikan alur login untuk penyedia autentikasi pengguna tersebut hingga, tetapi sebelum, memanggil salah satu metode FIRAuth.signInWith. Misalnya, dapatkan token ID Google, token akses Facebook, atau alamat email dan sandi pengguna tersebut.
  2. Dapatkan FIRAuthCredential untuk penyedia autentikasi baru:

    Login dengan Google
    Swift
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    
    Objective-C
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    Login dengan Facebook
    Swift
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    Objective-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    Login dengan email-sandi
    Swift
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Objective-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Teruskan objek FIRAuthCredential ke metode linkWithCredential:completion: pengguna yang login:

    Swift
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    
    Objective-C
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];
    

Jika panggilan ke linkWithCredential:completion: berhasil, akun baru pengguna dapat mengakses data Firebase akun anonim.

Pembersihan otomatis

Jika Anda mengaktifkan pembersihan otomatis di Firebase console, akun anonim yang berusia lebih dari 30 hari akan otomatis dihapus. Dengan mengaktifkan setelan ini, database pengguna Anda akan bersih dari akun yang tidak digunakan. Dalam project yang mengaktifkan pembersihan otomatis, autentikasi anonim tidak akan diperhitungkan dalam batas penggunaan atau kuota penagihan.

  • Setiap akun anonim yang dibuat setelah pembersihan otomatis diaktifkan akan dihapus dalam waktu 30 hari setelah akun tersebut dibuat.
  • Akun anonim yang dibuat sebelum pembersihan otomatis diaktifkan akan dihapus sekitar 30 hari setelah fitur ini diaktifkan.
  • Jika Anda menonaktifkan pembersihan otomatis, akun anonim yang dijadwalkan untuk dihapus akan tetap dijadwalkan untuk dihapus.
  • Jika Anda "mengupgrade" akun anonim dengan menautkannya ke metode login apa pun, akun tersebut tidak akan otomatis dihapus.

Jika ingin melihat jumlah pengguna yang akan terpengaruh sebelum Anda mengaktifkan fitur ini, dan Anda telah mengupgrade project ke Firebase Authentication dengan Identity Platform, Anda dapat memfilter berdasarkan is_anon di Cloud Logging.

Langkah berikutnya

Setelah pengguna dapat melakukan autentikasi dengan Firebase, Anda dapat mengontrol akses mereka ke data di database Firebase Anda menggunakan aturan Firebase.