Au cours du processus de connexion de base, votre application se voit accorder l’accès au profil public d’un utilisateur. Si vous souhaitez accéder à d’autres informations de profil ou publier du contenu sur Facebook au nom d’un utilisateur, vous devez demander d’autres autorisations. Pour cela, consultez les Autorisations avec Facebook Login.
Votre application doit gérer les autorisations comme suit :
Demandes de l’API Graph : avant d’envoyer des demandes à l’API Graph, vous devez vérifier les autorisations requises et les demander le cas échéant.
Autorisations manquantes et retirées : votre application doit gérer les erreurs d’autorisations manquantes ou retirées provenant de Facebook en demandant des autorisations, par exemple, et en réessayant. Consultez Gestion des erreurs, SDK iOS.
Demandes en temps opportun : votre conversion sera optimale si vous demandez uniquement les autorisations nécessaires au moment où vous en avez besoin.
Pour demander des autorisations au moment de la connexion avec FBSDKLoginButton
, définissez la propriété permissions
:
let loginButton = FBLoginButton() loginButton.permissions = ["public_profile", "email"]
Si vous utilisez un bouton Login personnalisé à la place de FBSDKLoginButton
, vous pouvez utiliser un LoginManager
pour effectuer la connexion :
override func viewDidLoad() { super.viewDidLoad() ... loginButton.addTarget(self, action: #selector(loginButtonClicked), for: .touchUpInside) } @objc func loginButtonClicked() { let loginManager = LoginManager() loginManager.logIn(permissions: ["email"], from: self) { result, error in // Process result or error } }
Vérifiez la disponibilité d’un token existant avant d’appeler loginManager
. Consultez Facebook Login pour iOS
Pour vérifier les autorisations actuelles, inspectez le FBSDKAccessToken
.
if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"email"]) { // TODO: publish content. } else { FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; [loginManager logInWithPublishPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { //TODO: process error or result. }]; }
Inspectez le FBSDKLoginResult
renvoyé après le rappel de FBSDKLoginManager
ou la délégation de FBSDKLoginButton
pour savoir si une demande d’autorisation a été refusée :
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; [loginManager logInWithPublishPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if ([result.declinedPermissions containsObject:@”email”]) { // TODO: do not request permissions again immediately. Consider providing a NUX // describing why the app want this permission. } else { // ... } }];
Lorsque vous envoyez des demandes à l’API Graph, vous pouvez vérifier l’objet NSError
pour savoir s’il y a des erreurs liées aux autorisations :
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/feed" parameters:@{ @"message" : @"This is a status update" } HTTPMethod:@"POST"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if ([error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] isEqual:@200]) { NSLog(@"permission error"); } }];
Pour plus d’informations, consultez Gestion des erreurs, SDK iOS.
Utilisez FBSDKLoginManager
pour demander d’autres autorisations ou des autorisations qui ont été refusées via les méthodes logInWith*:
. FBSDKLoginManager
saura qu’il s’agit d’une nouvelle demande avec la disponibilité de [FBSDKAccessToken currentAcccessToken]
.
Vous pouvez autoriser un utilisateur à supprimer ou à révoquer des autorisations qui ont été accordées à votre application. Par exemple, votre application peut être associée à une page de paramètres permettant de désactiver certaines fonctionnalités.
Révoquez des autorisations en appelant un point de terminaison de l’API Graph.
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions/email" parameters:nil HTTPMethod:@"DELETE"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { // ... }];
Vous pouvez révoquer tous les droits d’une application, en appelant l’API Graph de manière à supprimer toutes les autorisations. Utilisez le code de la section Révoquer des autorisations en remplaçant le chemin de la requête par /me/permissions
.
À des fins de test, vous pouvez souhaiter interdire ou révoquer des autorisations sans utiliser votre application. Pour ce faire, vous pouvez utiliser l’Explorateur de l’API Graph.
Get Token
> Get Access Token
.Clear
pour interdire l’application sélectionnée.Pour révoquer une seule autorisation :
/me/permissions/{permission-name}
tout en utilisant l’autorisation que vous souhaitez supprimer pour {permission-name}
, par exemple email
.GET
à DELETE
.Submit
.