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.
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") } } } }
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
:
UIButton
ke tata letak Anda. Tetapkan batasan untuk mengatur posisi.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];
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.
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 } }
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)
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 }