Buka konsol

Melakukan Autentikasi Menggunakan Login dengan Twitter pada iOS

Anda dapat mengizinkan pengguna untuk melakukan autentikasi dengan Firebase melalui akun Twitter mereka. Hal tersebut dapat dilakukan dengan mengintegrasikan autentikasi Twitter ke dalam aplikasi Anda.

Pengguna yang telah terautentikasi bisa mengakses data yang aksesnya dibatasi dalam Firebase Realtime Database dan Cloud Storage.

Sebelum memulai

  1. Tambahkan Firebase ke project iOS Anda. Sertakan pod berikut di Podfile Anda:
    pod 'Firebase/Auth'
  2. Daftarkan aplikasi Anda sebagai aplikasi developer di Twitter dan dapatkan Kunci API dan Rahasia API untuk aplikasi Anda.
  3. Aktifkan Login dengan Twitter:
    1. Di Firebase console, buka bagian Auth.
    2. Pada tab Metode login, aktifkan metode login dengan Twitter dan masukkan Kunci API dan Rahasia API yang Anda peroleh dari Twitter.
    3. Selanjutnya, pastikan URI pengalihan OAuth Firebase Anda (misalnya my-app-12345.firebaseapp.com/__/auth/handler) sudah ditetapkan sebagai URL Callback di halaman setelan aplikasi pada konfigurasi aplikasi Twitter.

Melakukan Autentikasi dengan Firebase

  1. Integrasikan Login dengan Twitter ke dalam aplikasi dengan mengikuti dokumentasi developer.

    Pada metode callback buttonWithLogInCompletion atau logInWithCompletion, dapatkan token autentikasi Twitter dan rahasia token autentikasi Twitter untuk sesi login tersebut. Misalnya:

    Swift

    let logInButton = TWTRLogInButton(logInCompletion: { session, error in
      if (session != nil) {
        let authToken = session.authToken
        let authTokenSecret = session.authTokenSecret
        // ...
      } else {
          // ...
      }
    })
    

    Objective-C

     TWTRLogInButton *logInButton =
         [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession* session,
                                                      NSError* error) {
      if (session) {
        NSString *authToken = session.authToken;
        NSString *authTokenSecret = session.authTokenSecret;
        // ...
      } else {
        // ...
      }
    }];
    
  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, pada implementasi didCompleteWithResult:error:, tukarkan token autentikasi Twitter dan rahasia token autentikasi Twitter dengan kredensial Firebase:

    Swift

    let credential = TwitterAuthProvider.credential(withToken: session.authToken, secret: session.authTokenSecret)

    Objective-C

    FIRAuthCredential *credential =
        [FIRTwitterAuthProvider credentialWithToken:session.authToken
                                             secret:session.authTokenSecret];
  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;
      // ...
    }];
  6. Opsional: Tambahkan alamat email ke profil pengguna. Ketika pengguna login ke aplikasi Anda melalui Twitter, alamat email mereka tidak akan bisa diakses oleh Firebase. Jika Anda ingin menambahkan alamat email ke profil pengguna yang login dengan Twitter, minta pengguna untuk memberikan alamat email mereka, kemudian panggil updateEmail seperti pada contoh di bawah:

    Swift

    Auth.auth().currentUser?.updateEmail(to: email) { (error) in
      // ...
    }

    Objective-C

    [[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) {
      // ...
    }];

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.

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

  • Dalam 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.