El inicio de sesión limitado permite a los desarrolladores señalar que un inicio de sesión es limitado en términos de seguimiento de los usuarios.
Un intento correcto de inicio de sesión rellenará una instancia AuthenticationToken
global que proporciona información sobre el intento de inicio de sesión que se puede usar para verificar la autenticación en los servidores del cliente. Además, rellenaremos una instancia del perfil compartido que incluirá información básica, tal como un identificador específico de la aplicación del usuario, el nombre del usuario y la foto de perfil.
Los permisos disponibles que puedes solicitar son los siguientes:
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
El inicio de sesión limitado permite a los desarrolladores pasar un nonce para usarlo a la hora de verificar un intento de autenticación en sus servidores. Para obtener información sobre cómo usar el nonce para validar los identificadores, consulta Validación del identificador de OIDC del inicio de sesión limitado.
El cambio de aplicación, en el que el cuadro de diálogo de inicio de sesión se muestra al usuario en la aplicación de Facebook para iOS cuando ya ha iniciado sesión, no es compatible con los procesos del inicio de sesión limitado.
El SDK de Facebook para iOS proporciona una nueva enumeración FBSDKLoginTracking
. Los posibles valores son enabled
y limited
. En el caso del inicio de sesión limitado, usa limited
.
enum LoginTracking {
case enabled
case limited
}
Además, el inicio de sesión limitado usa FBSDKLoginConfiguration
para modificar el comportamiento predeterminado de un intento de inicio de sesión. Esta configuración se creará con las propiedades predeterminadas, las propiedades explícitas (solo Swift) o uno de los diversos inicializadores:
init?(
permissions: Set
Propiedad | Descripción |
---|---|
| Permisos solicitados para el intento de inicio de sesión. El valor predeterminado es un conjunto vacío. |
| Permisos solicitados para el intento de inicio de sesión. El valor predeterminado es un conjunto vacío. |
| Preferencia de seguimiento del inicio de sesión. El valor predeterminado es |
| Nonce con el que se ha creado la configuración. Se usará un nonce único si no se proporciona ninguno para el método de fábrica. |
Se produce un error al intentar crear una configuración si no se cumplen las siguientes condiciones:
El nonce debe ser una cadena no vacía que no incluya espacios en blanco.
No puedes solicitar permisos que estén fuera del alcance del seguimiento. Por ejemplo, la solicitud de user_likes
no funcionará si el seguimiento es .limited
.
Para implementar el inicio de sesión limitado en una aplicación directamente con la clase del administrador de inicios de sesión, mejora el SDK de Facebook para iOS al más reciente y usa el siguiente código:
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
}
}
Para implementar el inicio de sesión limitado en una aplicación con el botón “Iniciar sesión”, mejora el SDK de Facebook para iOS al más reciente y usa el siguiente código:
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
}