O Login Limitado permite aos desenvolvedores sinalizar a limitação relacionada ao rastreamento de usuários.
Uma tentativa bem-sucedida de login preencherá uma instância global de AuthenticationToken
com informações que podem ser usadas para verificar a autenticação nos servidores do cliente. Além disso, preencheremos uma instância compartilhada de perfil com informações básicas, como ID no escopo do app, nome e foto do perfil do usuário.
As permissões disponíveis que você pode solicitar são as seguintes:
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
O Login Limitado permite que os desenvolvedores usem um nonce para verificar tentativas de autenticação nos servidores. Para mais informações sobre a validação do token do nonce, consulte Validating the Limited Login OIDC Token.
A mudança de app, na qual o diálogo Entrar é apresentado ao usuário no app Facebook para iOS após ele ter feito login lá, não é compatível com fluxos de Login Limitado.
O SDK do Facebook para iOS fornece uma nova enumeração FBSDKLoginTracking
. Os valores possíveis são enabled
e limited
. Para o Login Limitado, use limited
.
enum LoginTracking {
case enabled
case limited
}
Ainda, o Login Limitado usa FBSDKLoginConfiguration
para modificar o comportamento padrão de uma tentativa de login. É possível criar essa configuração com propriedades padrão, explícitas (somente Swift) ou com uma das diversas opções de inicializador disponíveis:
init?(
permissions: Set
Propriedade | Descrição |
---|---|
| As permissões solicitadas para a tentativa de login. Usa um conjunto vazio por padrão. |
| As permissões solicitadas para a tentativa de login. Usa um conjunto vazio por padrão. |
| A preferência de rastreamento do login. O padrão é |
| O nonce com que a configuração foi criada. Um nonce único será usado caso nenhum seja fornecido ao construtor virtual. |
A criação será malsucedida se os requisitos a seguir não forem atendidos:
O nonce deve ser uma string sem espaços em branco que não pode estar vazia.
Permissões fora do escopo do rastreamento não podem ser solicitadas. Por exemplo, se o rastreamento for user_likes
, solicitar .limited
resultará em erro.
Para implementar o Login Limitado no seu app com a classe de gerenciador de login, atualize o SDK do Facebook para iOS para a versão mais recente e use o código a seguir:
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 o Login Limitado no seu app com o botão Entrar, atualize o SDK do Facebook para iOS para a versão mais recente e use o código a seguir:
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
}