Tinjauan Login

Jika aplikasi Anda meminta lebih dari public_profile dan email, Facebook harus meninjaunya sebelum Anda merilisnya. Pelajari selengkapnya tentang proses tinjauan dan apa yang dibutuhkan untuk lulus tinjauan.

Panduan Tinjauan Login

Tombol Login Khusus

Alih-alih menggunakan tombol login bermerek Facebook (dijelaskan dalam Facebook login untuk iOS - Mulai Cepat) Anda mungkin ingin merancang tata letak dan perilaku khusus. Dalam contoh kode berikut kami meminta dialog login menggunakan kelas pengelola login (LoginManager) dan tombol khusus (UIButton). Anda dapat menggunakan antarmuka pengguna khusus atau penangan peristiwa untuk memanggil dialog login.

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // Add a custom login button to your app
        let loginButton = UIButton(type: .custom)
        loginButton.backgroundColor = .darkGray
        loginButton.frame = CGRect(x: 0, y: 0, width: 180, height: 40)
        loginButton.center = view.center
        loginButton.setTitle("My Login Button", for: .normal)

        // Handle clicks on the button
        loginButton.addTarget(self, action: #selector(loginButtonClicked), for: .touchUpInside)

        view.addSubview(loginButton)
    }
  
  
    // Once the button is clicked, show the login dialog
    func loginButtonClicked() {
        let loginManager = LoginManager()
        loginManager.logIn(permissions: ["public_profile"], from: self) { result, error in
            if let error = error {
                print("Encountered Erorr: \(error)")
            } else if let result = result, result.isCancelled {
                print("Cancelled")
            } else {
                print("Logged In")
            }
        }
    }
}

    

Menggunakan Builder Antarmuka

Langkah-langkah ini wajib untuk Facebook SDK untuk iOS versi 12.0.0 dan yang lebih baru. Aplikasi yang menggunakan Interface Builder mungkin crash jika Anda belum menyelesaikan langkah ini.

Untuk menambahkan tombol login secara grafis di Interface Builder:

  1. Tambahkan objek UIButton ke tata letak Anda. Tetapkan batasan untuk mengatur posisi.
  2. Di Identity inspector, ganti properti Class menjadi FBSDKLoginButton.

Sekarang tata letak Anda terlihat seperti ini:

Catatan: Jangan mengatur modul untuk kelas FBSDKLoginButton. Ini akan menampilkan None:

Catatan: Anda mungkin melihat kesalahan berikut di catatan Xcode karena ada masalah dengan XCFrameworks yang sudah diketahui:

[Storyboard] Unknown class FBSDKLoginButton in Interface Builder file.

Anda dapat memperbaiki ini dengan "pramuat" kelas FBSDKLoginButton sebelum papan cerita dimuat dengan menambahkan hal berikut ke metode application:didFinishLaunchingWithOptions::

// For Swift
_ = FBLoginButton.self

// For Objective-C
[FBSDKLoginButton class];

Token Akses

Notifikasi

Anda dapat melacak perubahan AccessToken.current dengan notifikasi .AccessTokenDidChange di NotificationCenter. Hal ini memungkinkan Anda untuk menanggapi perubahan status login pengguna:

NotificationCenter.default.addObserver(
    forName: .AccessTokenDidChange,
    object: nil,
    queue: .main
) { notification in
    if notification.userInfo?[AccessTokenDidChangeUserIDKey] != nil {
        // Handle user change
    }
}

Facebook SDK untuk iOS dapat memperbarui AccessToken.current dari waktu ke waktu, seperti saat SDK memuat ulang token dengan tanggal kedaluwarsa yang lebih lama. Oleh karena itu, Anda harus memeriksa kamus userInfo di notifikasi untuk AccessTokenDidChangeUserIDKey guna menentukan apakah pengguna telah berubah.

Profil

Profile berisi informasi profil publik, yang memungkinkan Anda untuk mempersonalisasikan aplikasi Anda dengan nama pengguna dan foto profil. Anda dapat memuat profil pengguna yang login menggunakan loadCurrentProfile(completion:).

Profile.loadCurrentProfile { profile, error in
    if let firstName = profile?.firstName {
        print("Hello, \(firstName)")
    }
}

Anda dapat mengatur properti enableUpdatesOnAccessTokenChange ke true agar profil dimuat secara otomatis ke Profile.current. Ini juga memungkinkan Anda untuk mengamati notifikasi .ProfileDidChange guna menanggapi perubahan profil:

Profile.enableUpdatesOnAccessTokenChange(true)
NotificationCenter.default.addObserver(
    forName: .ProfileDidChange,
    object: nil,
    queue: .main
) { notification in
    if let currentProfile = Profile.current {
        // Update for new user profile
    }
}

Menampilkan Foto Profil

Kelas FBProfilePictureView memberikan cara mudah untuk menampilkan foto profil Facebook seseorang. Cukup atur properti profileID di instance. Anda dapat mengaturnya ke nilai AccessToken.current.userID untuk menampilkan foto profil orang yang saat ini login.

let profilePictureView = FBProfilePictureView()
profilePictureView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
profilePictureView.profileID = AccessToken.current!.userID
view.addSubview(profilePictureView)

Mengatur Jenis Otorisasi

auth_type default untuk tombol Facebook Login di Facebook SDK untuk iOS adalah minta ulang. Jika Anda tidak ingin meminta izin yang sebelumnya ditolak, atur auth_type ke nil. Anda juga dapat mengaturnya ke otorisasi ulang untuk menampilkan dialog otorisasi ulang data jika akses data pengguna telah kedaluwarsa.

Contoh berikut menampilkan cara mengatur auth_type di Swift.

let loginButton = FBLoginButton()

// Set to nil for no auth_type
button.authType = nil

// Or set to reauthorize
button.authType = .reauthorize

Contoh berikut menampilkan cara mengatur auth_type menggunakan konfigurasi login dengan pengelola login.

let config = LoginConfiguration(
    permissions: [],
    tracking: .enabled,
    messengerPageId: nil,
    authType: nil
)

let loginManager = LoginManager()
loginManager.logIn(viewController: self, configuration: config!) { loginResult in
    // Do something with loginResult
}