Limited Login consente agli sviluppatori di segnalare che un accesso è limitato in termini di monitoraggio degli utenti.
Un tentativo di accesso riuscito popolerà un'istanza globale AuthenticationToken
che fornisce informazioni sul tentativo di accesso che possono essere utilizzate per verificare l'autenticazione sui server del client. Inoltre, popoleremo un'istanza di profilo condivisa che conterrà informazioni di base tra cui un ID per singola app per l'utente, il nome dell'utente e la foto del profilo.
Le autorizzazioni disponibili che puoi richiedere sono le seguenti:
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
Limited Login consente agli sviluppatori di passare un nonce da utilizzare per verificare un tentativo di autenticazione sui propri server. Per informazioni sull'uso dei nonce per convalidare i token, consulta Convalida del token OIDC Limited Login.
Il cambiamento di app, presentando la finestra di dialogo Accedi agli utenti nell'app Facebook per iOS quando hanno già effettuato l'accesso, non è supportato per i flussi Limited Login.
L'SDK di Facebook per iOS fornisce una nuova enumerazione FBSDKLoginTracking
. I valori possibili sono enabled
e limited
. Per Limited Login, usare limited
.
enum LoginTracking {
case enabled
case limited
}
Inoltre, Limited Login utilizza FBSDKLoginConfiguration
per modificare il comportamento predefinito di un tentativo di accesso. Questa configurazione può essere creata con proprietà predefinite, proprietà esplicite (solo Swift) o con uno dei diversi inizializzatori:
init?(
permissions: Set
Proprietà | Descrizione |
---|---|
| Autorizzazioni richieste per il tentativo di accesso. Per impostazione predefinita, è un set vuoto. |
| Autorizzazioni richieste per il tentativo di accesso. Per impostazione predefinita, è un set vuoto. |
| Preferenza di monitoraggio degli accessi. Valore predefinito: |
| Nonce con cui è stata creata la configurazione. Verrà utilizzato un nonce univoco se non ne viene fornito nessuno nel metodo factory. |
Il tentativo di creare una configurazione non va a buon fine se non sono soddisfatte le seguenti condizioni:
Nonce deve essere una stringa non vuota che non include spazi bianchi.
Non è possibile richiedere autorizzazioni che esulano dall'ambito del monitoraggio. Ad esempio, la richiesta di user_likes
non funziona se il monitoraggio è .limited
.
Per implementare Limited Login nella tua app utilizzando direttamente la classe di gestione degli accessi, esegui l'aggiornamento all'ultima versione di SDK di Facebook per iOS e utilizza il codice seguente:
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
}
}
Per implementare Limited Login nella tua app utilizzando il pulsante di accesso, esegui l'aggiornamento all'ultimo SDK di Facebook per iOS e utilizza il codice seguente:
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
}