การเข้าสู่ระบบแบบจำกัดข้อมูลช่วยให้ผู้พัฒนาสามารถแจ้งให้ทราบได้ว่าการเข้าสู่ระบบมีข้อจำกัดในด้านการติดตามผู้ใช้
เมื่อเข้าสู่ระบบสำเร็จ ระบบจะสร้างอินสแตนซ์ AuthenticationToken
กลางที่ให้ข้อมูลเกี่ยวกับความพยายามเข้าสู่ระบบ ซึ่งสามารถนำมาใช้ตรวจสอบยืนยันการยืนยันตัวตนบนเซิร์ฟเวอร์ของลูกค้าได้ นอกจากนี้ เราจะสร้างอินสแตนซ์โปรไฟล์ที่ใช้ร่วมกัน ซึ่งประกอบไปด้วยข้อมูลพื้นฐาน ที่รวมถึง ID ในแอพสำหรับผู้ใช้ ชื่อของผู้ใช้ และรูปโปรไฟล์
สิทธิ์การอนุญาตที่คุณสามารถขอได้มีดังต่อไปนี้
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
การเข้าสู่ระบบแบบจำกัดข้อมูลช่วยให้ผู้พัฒนาสามารถส่งนอนซ์สำหรับใช้ในการตรวจสอบยืนยันความพยายามในการยืนยันตัวตนบนเซิร์ฟเวอร์ของตนได้ โปรดดูข้อมูลเกี่ยวกับการใช้นอนซ์เพื่อตรวจสอบความถูกต้องของโทเค็นที่การตรวจสอบความถูกต้องของโทเค็น OIDC สำหรับการเข้าสู่ระบบแบบจำกัดข้อมูล
ระบบไม่รองรับการสลับแอพ (ซึ่งจะแสดงกล่องการเข้าสู่ระบบต่อผู้ใช้ในแอพ Facebook สำหรับ iOS เมื่อผู้ใช้ดังกล่าวเข้าสู่ระบบอยู่แล้ว) สำหรับขั้นตอนการเข้าสู่ระบบแบบจำกัดข้อมูล
Facebook SDK สำหรับ iOS มีการแจงนับ FBSDKLoginTracking
แบบใหม่ ซึ่งค่าที่เป็นไปได้คือ enabled
และ limited
สำหรับการเข้าสู่ระบบแบบจำกัดข้อมูล ให้ใช้ limited
enum LoginTracking {
case enabled
case limited
}
นอกจากนี้ การเข้าสู่ระบบแบบจำกัดข้อมูลจะใช้ FBSDKLoginConfiguration
เพื่อปรับเปลี่ยนลักษณะการทำงานเริ่มต้นของการเข้าสู่ระบบ โดยการกำหนดค่านี้จะสร้างขึ้นด้วยคุณสมบัติเริ่มต้น คุณสมบัติที่ชัดเจน (เฉพาะ Swift) หรือด้วยตัวเริ่มอย่างใดอย่างหนึ่งดังต่อไปนี้
init?(
permissions: Set
คุณสมบัติ | คำอธิบาย |
---|---|
| สิทธิ์การอนุญาตที่ขอสำหรับการเข้าสู่ระบบ มีค่าเริ่มต้นเป็นชุดข้อมูลเปล่า |
| สิทธิ์การอนุญาตที่ขอสำหรับการเข้าสู่ระบบ มีค่าเริ่มต้นเป็นชุดข้อมูลเปล่า |
| การกำหนดลักษณะการติดตามการเข้าสู่ระบบ มีค่าเริ่มต้นเป็น |
| นอนซ์ที่ใช้สร้างการกำหนดค่า โดยระบบจะใช้นอนซ์ที่ไม่ซ้ำกันหากไม่มีการมอบนอนซ์ใดๆ ให้แก่เมธอดเริ่มต้น |
การพยายามสร้างการกำหนดค่าจะล้มเหลวหากไม่เป็นไปตามเงื่อนไขต่อไปนี้
นอนซ์ต้องเป็นสตริงที่ไม่ว่างเปล่าและไม่มีช่องว่าง
คุณไม่สามารถขอสิทธิ์การอนุญาตที่อยู่นอกขอบเขตของการติดตามได้ ตัวอย่างเช่น คุณจะไม่สามารถขอ user_likes
ได้ หากการติดตามนั้นมีค่าเป็น .limited
หากต้องการปรับใช้การเข้าสู่ระบบแบบจำกัดข้อมูลในแอพของคุณโดยใช้คลาสตัวจัดการการเข้าสู่ระบบโดยตรง ให้อัพเกรดมาใช้ Facebook SDK สำหรับ iOS เวอร์ชั่นล่าสุดและใช้โค้ดต่อไปนี้
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
}
}
หากต้องการปรับใช้การเข้าสู่ระบบแบบจำกัดข้อมูลในแอพของคุณโดยใช้ปุ่มเข้าสู่ระบบ ให้อัพเกรด Facebook SDK สำหรับ iOS เป็นเวอร์ชั่นล่าสุดและใช้โค้ดต่อไปนี้
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
}