web-dev-qa-db-fra.com

Connexion Facebook - iOS 9 - Sans Safari

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(@"");
}];
31
user4200570

L’utilisation de 20150708 l’a résolu pour iOS 9.

Lien vers le SDK: https://developers.facebook.com/resources/FacebookSDKs-iOS-20150708.pkg

9
user4200570

Il semble qu'il n'y ait aucun moyen d'obtenir le comportement précédent en utilisant les kits de développement logiciel FB SDK sous iOS9 +. Vous pouvez utiliser un vieux SDK pour le faire. Voici une réponse du facebook à cette question:  enter image description here

39
Lucas Brito

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.

15
saltwat5r

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.

2
vk.edward.li

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 ...

1
dondonhk

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.

1
Justin Whitney

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.

1
smoothumut

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
0
Krishna Gawade

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.

0
user1709076

Utilisation de cette version avec CocoaPods:

pod 'FBSDKCoreKit', '4.4.0'
pod 'FBSDKLoginKit', '4.4.0'
pod 'FBSDKShareKit', '4.4.0'
0
Tai Le