La connexion à logInWithReadPermissions dans iOS 8 a bien fonctionné, mais dès la mise à jour vers iOS 9, il continue d’ouvrir Safari ou un UIWebView modal.
Est-ce que quelqu'un a le même problème?
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorNative];
[login logInWithReadPermissions:@[@"public_profile",@"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
NSLog(@"");
}];
L’utilisation de 20150708 l’a résolu pour iOS 9.
Lien vers le SDK: https://developers.facebook.com/resources/FacebookSDKs-iOS-20150708.pkg
A partir de maintenant, vous pouvez modifier loginBehavior en FBSDKLoginBehaviorSystemAccount, afin que FBSDKLoginManager obtienne un utilisateur Facebook connecté depuis les paramètres Facebook iOS;)
FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
fbLogin.loginBehavior = FBSDKLoginBehaviorSystemAccount;
De FBSDKLoginManager:
Declaration : FBSDKLoginBehaviorSystemAccount
Description : Si le compte n'est pas disponible pour l'application (non configuré par l'utilisateur ou déterminé par le SDK), ce comportement revient à FBSDKLoginBehaviorNative.
Remarque : Si le compte n'est pas disponible pour l'application (non configuré par l'utilisateur ou déterminé par le SDK), ce comportement revient à FBSDKLoginBehaviorNative.
Si vous souhaitez utiliser le dernier SDK ainsi que le comportement de connexion natif sur iOS 9
Modifier la fonction de FBSDKServerConfiguration.m
pour toujours renvoyer true
- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName
{
return @YES;
}
Le retour à Safari fonctionne toujours si l'application Facebook n'est pas installée.
J'ai suivi la doc ici: https://developers.facebook.com/docs/ios/ios9
après avoir ajouté les points 2 et 3, mon application bascule vers l'application native Facebook pour la connexion ...
J'ai remarqué cela dans les deux changelogs, aussi:
Kit de développement logiciel (SDK) Facebook pour iOS Changelog v4.x
(v4.6.0 - 10 septembre 2015) En outre, les boîtes de dialogue du kit SDK telles que les boîtes de dialogue de connexion, assimilées, partagées déterminent automatiquement la meilleure interface utilisateur en fonction du périphérique, y compris SFSafariViewController au lieu de Safari. Suivez notre guide Préparation à iOS 9.
Kit de développement logiciel (SDK) Facebook pour iOS Changelog v3.x
(v3.24.0 - 10 septembre 2015) En outre, les boîtes de dialogue du SDK telles que les boîtes de dialogue de connexion, assimilées, partagées déterminent automatiquement la meilleure interface utilisateur en fonction du périphérique, y compris SFSafariViewController au lieu de Safari. Suivez notre guide Préparation à iOS 9.
si vous souhaitez qu'un modal s'ouvre et demande des informations d'identification Facebook séparément de Safari ou de l'application Facebook, utilisez simplement la dernière version de Facebook et configurez le comportement de connexion
FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorWeb];
cela rendra le processus de déconnexion plus pratique et moins déroutant pour les utilisateurs.
Dans Swift Lorsque votre comportement de connexion sélectionné est Web, ouvrez webView popUp. Il n'y a pas de redirection de connexion au navigateur Safari
// Try to login with permissions
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
Vous souhaitez modifier le comportement de connexion par défaut comme suit
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];
login.loginBehavior = FBSDKLoginBehaviorSystemAccount;
[login logInWithReadPermissions:@[@"public_profile", @"email", @"gender",@"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error)
{
// Process error
}
else if (result.isCancelled)
{
// Handle cancellations
}
else
{
// Now that we are authorized to view public profile and email, request that data get data from 'me'
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields" : @"first_name, last_name,email,name,gender,birthday"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
}];
}
}];
si l'utilisateur ne dispose pas de son nom d'utilisateur et de son mot de passe facebook sous Paramètres app, alors Safari apparaîtra.
Utilisation de cette version avec CocoaPods:
pod 'FBSDKCoreKit', '4.4.0'
pod 'FBSDKLoginKit', '4.4.0'
pod 'FBSDKShareKit', '4.4.0'