Melakukan Autentikasi Menggunakan Login dengan Facebook di iOS

Anda dapat mengizinkan pengguna melakukan autentikasi dengan Firebase menggunakan akun Facebook mereka, dengan mengintegrasikan Login dengan Facebook ke dalam aplikasi.

Sebelum memulai

  1. Tambahkan Firebase ke project iOS Anda. Sertakan pod berikut di Podfile Anda:
    pod 'Firebase/Auth'
    
  2. Jika Anda belum menghubungkan aplikasi dengan project Firebase, lakukanlah dari Firebase console.
  3. Di situs Facebook for Developers, dapatkan App ID dan App Secret untuk aplikasi Anda.
  4. Aktifkan Login dengan Facebook:
    1. Di Firebase console, buka bagian Auth.
    2. Pada tab Metode Login, aktifkan metode login dengan Facebook, lalu masukkan App ID dan App secret yang Anda dapatkan dari Facebook.
    3. Kemudian, pastikan URI pengalihan OAuth Anda (misalnya my-app-12345.firebaseapp.com/__/auth/handler) tercantum sebagai salah satu URI pengalihan OAuth di halaman setelan aplikasi Facebook Anda di situs Facebook for Developers pada konfigurasi Product Settings > Facebook Login.

Melakukan autentikasi dengan Firebase

  1. Integrasikan Login dengan Facebook ke dalam aplikasi dengan mengikuti dokumentasi developer. Ketika Anda melakukan inisialisasi objek FBSDKLoginButton, tetapkan delegasi untuk menerima peristiwa login dan logout. Misalnya:

    Swift

    let loginButton = FBSDKLoginButton()
    loginButton.delegate = self
    

    Objective-C

    FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
    loginButton.delegate = self;
    
    Dalam delegasi, implementasikan didCompleteWithResult:error:.

    Swift

    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
      if let error = error {
        print(error.localizedDescription)
        return
      }
      // ...
    }
    

    Objective-C

    - (void)loginButton:(FBSDKLoginButton *)loginButton
        didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
                        error:(NSError *)error {
      if (error == nil) {
        // ...
      } else {
        NSLog(error.localizedDescription);
      }
    }
    
  2. Impor modul Firebase di UIApplicationDelegate Anda:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  3. Konfigurasi instance bersama FirebaseApp, yang biasanya ada dalam metode application:didFinishLaunchingWithOptions: aplikasi Anda:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  4. Setelah pengguna berhasil login, dalam implementasi didCompleteWithResult:error:, dapatkan token akses untuk pengguna yang telah login, lalu tukarkan dengan kredensial Firebase:

    Swift

    let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
    

    Objective-C

    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
  5. Terakhir, lakukan autentikasi dengan Firebase menggunakan kredensial Firebase:

    Swift

    Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
      if let error = error {
        // ...
        return
      }
      // User is signed in
      // ...
    }
    

    Objective-C

    [[FIRAuth auth] signInAndRetrieveDataWithCredential:credential
                                             completion:^(FIRAuthDataResult * _Nullable authResult,
                                                          NSError * _Nullable error) {
      if (error) {
        // ...
        return;
      }
      // User successfully signed in. Get user data from the FIRUser object
      if (authResult == nil) { return; }
      FIRUser *user = authResult.user;
      // ...
    }];
    

Langkah berikutnya

Setelah pengguna login untuk pertama kalinya, akun pengguna baru akan dibuat dan dihubungkan ke kredensial—yaitu, nama pengguna dan sandi, nomor telepon, atau informasi penyedia autentikasi—yang digunakan pengguna tersebut untuk login. Akun baru ini disimpan sebagai bagian dari project Firebase Anda, dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam project Anda, terlepas dari cara pengguna login.

  • Pada aplikasi, Anda bisa memperoleh informasi profil dasar pengguna dari objek FIRUser. Lihat Mengelola Pengguna.

  • Pada Aturan Keamanan Firebase Realtime Database dan Cloud Storage, Anda dapat memperoleh ID unik milik pengguna yang login dari variabel auth dan menggunakannya untuk mengontrol data yang dapat diakses pengguna.

Anda dapat mengizinkan pengguna untuk login ke aplikasi Anda menggunakan beberapa penyedia autentikasi dengan menautkan kredensial penyedia autentikasi ke akun pengguna yang ada.

Agar pengguna logout, panggil signOut:.

Swift

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print ("Error signing out: %@", signOutError)
}
  

Objective-C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

Mungkin Anda juga ingin menambahkan kode penanganan error untuk berbagai error autentikasi. Lihat Menangani Error.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.