Buka konsol

Melakukan Autentikasi Menggunakan GitHub di iOS

Anda dapat mengizinkan pengguna untuk melakukan autentikasi dengan Firebase menggunakan akun GitHub mereka. Hal tersebut dapat dilakukan dengan mengintegrasikan autentikasi GitHub 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 GitHub, lalu dapatkan ID Klien dan Rahasia Klien OAuth 2.0 untuk aplikasi Anda.
  3. Aktifkan autentikasi GitHub:
    1. Di Firebase console, buka bagian Auth.
    2. Pada tab Metode login, aktifkan metode login GitHub serta tentukan Client ID dan Client Secret OAuth 2.0 yang didapat dari GitHub.
    3. Kemudian, pastikan URI pengalihan OAuth Firebase Anda (misalnya, my-app-12345.firebaseapp.com/__/auth/handler) ditetapkan sebagai URL callback otorisasi di halaman setelan aplikasi pada konfigurasi aplikasi GitHub.

Melakukan autentikasi dengan Firebase

  1. Integrasikan autentikasi GitHub ke dalam aplikasi dengan mengikuti dokumentasi developer. Gunakan alur aplikasi web, dan siapkan skema URL khusus dalam aplikasi Anda untuk menangani callback OAuth 2.0 dari GitHub. Pada akhir alur login GitHub, Anda akan menerima token akses OAuth 2.0.
  2. Impor modul Firebase di UIApplicationDelegate Anda:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  3. Konfigurasikan instance bersama FirebaseApp, biasanya di metode application:didFinishLaunchingWithOptions: pada 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 dengan GitHub, pada implementasi didCompleteWithResult:error:, tukarkan token akses OAuth 2.0 dari GitHub dengan kredensial Firebase:

    Swift

    let credential =
        GitHubAuthProvider.credential(withToken: accessToken)
    

    Objective-C

    FIRAuthCredential *credential =
        [FIRGitHubAuthProvider credentialWithToken:accessToken];
    
  5. Terakhir, lakukan autentikasi dengan Firebase menggunakan kredensial Firebase:

    Swift

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

    Objective-C

    [[FIRAuth auth] signInWithCredential: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.

  • 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, gunakan 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.