Login Terbatas mengizinkan developer untuk memberi sinyal bahwa login dibatasi dalam hal melacak pengguna.
Upaya login yang berhasil akan mengisi instance AuthenticationToken
global yang memberikan informasi tentang upaya login yang dapat digunakan untuk memverifikasi autentikasi di server klien. Selain itu, kami akan mengisi instance Profil bersama yang akan berisi informasi dasar termasuk ID lingkup aplikasi untuk pengguna, nama pengguna, dan gambar profil.
Izin tersedia yang Anda bisa minta adalah sebagai berikut:
public_profile
email
gaming_profile
gaming_user_picture
user_age_range
user_birthday
user_friends
user_gender
user_hometown
user_link
user_location
user_messenger_contact
Login Terbatas mengizinkan developer untuk meneruskan nonce untuk digunakan dalam memverifikasi upaya autentikasi di server mereka. Untuk informasi tentang penggunaan nonce guna memvalidasi token, lihat Memvalidasi Token OIDC Login Terbatas.
Beralih aplikasi, dengan dialog login disajikan kepada pengguna di aplikasi Facebook untuk iOS ketika pengguna sudah login, tidak didukung untuk alur login terbatas.
Facebook SDK untuk iOS menyediakan pencacahan FBSDKLoginTracking
baru. Nilai yang mungkin adalah enabled
dan limited
. Untuk Login Terbatas, gunakan limited
.
enum LoginTracking {
case enabled
case limited
}
Selain itu, Login Terbatas menggunakan FBSDKLoginConfiguration
untuk mengubah perilaku default upaya login. Konfigurasi ini dibuat dengan properti default, properti eksplisit (hanya Swift), atau dengan salah satu dari beberapa penginisialisasi:
init?(
permissions: Set
Properti | Deskripsi |
---|---|
| Izin yang diminta untuk upaya login. Default-nya set kosong. |
| Izin yang diminta untuk upaya login. Default-nya set kosong. |
| Preferensi pelacakan login. Default-nya |
| Nonce untuk pembuatan konfigurasi. Nonce unik akan digunakan jika tidak ada yang diberikan ke metode pabrik. |
Mencoba membuat konfigurasi gagal jika kondisi berikut tidak terpenuhi:
Nonce harus berupa string tidak kosong yang tidak ada spasi.
Anda tidak dapat meminta izin di luar cakupan pelacakan. Contoh: meminta user_likes
tidak berfungsi jika pelacakannya .limited
.
Untuk menerapkan Login Terbatas di aplikasi Anda menggunakan kelas pengelola login secara langsung, tingkatkan ke Facebook SDK untuk iOS versi terbaru dan gunakan kode berikut:
let loginManager = LoginManager()
// Ensure the configuration object is valid
guard let configuration = LoginConfiguration(
permissions:["email", "user_friends", "user_birthday", "user_age_range", "user_gender", "user_location", "user_hometown", "user_link"],
tracking: .limited,
nonce: "123"
)
else {
return
}
loginManager.logIn(configuration: configuration) { result in
switch result {
case .cancelled, .failed:
// Handle error
break
case .success:
// getting user ID
let userID = Profile.current?.userID
// getting pre-populated email
let email = Profile.current?.email
// getting pre-populated friends list
let friendIDs = Profile.current?.friendIDs
// getting pre-populated user birthday
let birthday = Profile.current?.birthday
// getting pre-populated age range
let ageRange = Profile.current?.ageRange
// getting user gender
let gender = Profile.current?.gender
// getting user location
let location = Profile.current?.location
// getting user hometown
let hometown = Profile.current?.hometown
// getting user profile URL
let profileURL = Profile.current?.linkURL
// getting id token string
let tokenString = AuthenticationToken.current?.tokenString
}
}
Untuk menerapkan Login Terbatas di aplikasi Anda menggunakan tombol login, tingkatkan ke Facebook SDK terbaru untuk iOS dan gunakan kode berikut:
override func viewDidLoad() {
super.viewDidLoad()
setupLoginButton()
}
func setupLoginButton() {
loginButton.delegate = self
loginButton.permissions = ["email"]
loginButton.loginTracking = .limited
loginButton.nonce = "123" as NSString
}
func loginButton(
_ loginButton: FBLoginButton,
didCompleteWith potentialResult: LoginManagerLoginResult?,
error potentialError: Error?
) {
if let error = potentialError {
// Handle Error
}
guard let result = potentialResult else {
// Handle missing result
}
guard !result.isCancelled else {
// Handle cancellation
}
// Handle successful login
let userID = Profile.current?.userID
let email = Profile.current?.email
let tokenString = AuthenticationToken.current?.tokenString
}