Mit Limited Login können Entwickler*innen die Anmeldung in Bezug auf das Nutzer*innen-Tracking einschränken.
Bei einer erfolgreichen Anmeldung wird eine globale AuthenticationToken
-Instanz gefüllt, die Informationen zum Anmeldeversuch für die Authentifizierung auf den Clientservern bereitstellt. Außerdem füllen wir eine gemeinsam verwendete Profilinstanz mit allgemeinen Informationen, einschließlich einer App-spezifischen ID für den*die Nutzer*in, dem Namen des*der Nutzer*in und einem Profilbild.
Du kannst folgende Berechtigungen anfordern:
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
Beim Limited Login können Entwickler*innen eine Nonce für die Verifizierung eines Authentifizierungsversuchs auf ihren Servern übergeben. Weitere Informationen zur Validierung von Token mithilfe von Nonces findest du unter Validierung des OIDC-Token für Limited Login.
Ein App-Wechsel, bei dem der Login-Dialog dem*der Nutzer*in in der Facebook für iOS-App präsentiert wird, während er*sie bereits dort angemeldet ist, wird für Limited Login-Abläufe nicht unterstützt.
Das Facebook-SDK für iOS umfasst eine neue FBSDKLoginTracking
-Enumeration. Mögliche Werte sind enabled
und limited
. Verwende für Limited Login limited
.
enum LoginTracking {
case enabled
case limited
}
Darüber hinaus nutzt Limited Login FBSDKLoginConfiguration
, um das Standardverhalten bei einem Anmeldeversuch zu ändern. Diese Konfiguration kann mit Standardeigenschaften, expliziten Eigenschaften (nur Swift) oder einem von mehreren Initialisierern erstellt werden:
init?(
permissions: Set
Eigenschaft | Beschreibung |
---|---|
| Angefragte Berechtigungen für den Anmeldeversuch. Standardmäßig ein leeres Set. |
| Angefragte Berechtigungen für den Anmeldeversuch. Standardmäßig ein leeres Set. |
| Einstellung für Login-Tracking. Der Standardwert ist |
| Nonce, mit der die Konfiguration erstellt wurde. Eine eindeutige Nonce wird verwendet, wenn keine für die Factory-Methode angegeben wird. |
Es kann nur dann eine Konfiguration erstellt werden, wenn die folgenden Bedingungen erfüllt sind:
Die Nonce muss eine nicht leere Zeichenfolge ohne Leerzeichen sein.
Du kannst keine Berechtigungen anfragen, die außerhalb des Tracking-Bereichs liegen. Beispielsweise kannst du nicht user_likes
anfragen, wenn das Tracking auf .limited
gesetzt ist.
Um Limited Login mit der Login-Manager-Klasse direkt in deiner App zu implementieren, führe ein Upgrade auf das aktuelle Facebook-SDK für iOS durch, und verwende den folgenden Code:
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
}
}
Um Limited Login mit dem Login-Button in deiner App zu implementieren, führe ein Upgrade auf das aktuelle Facebook-SDK für iOS durch, und verwende den folgenden Code:
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
}