J'implémente Facebook Connexion dans mon application.Connexion Facebook après avoir obtenu des autorisations laissez Safari page blanche ouverte au lieu de rediriger vers mon application dans iOS 10 et iOS 11
Tout fonctionne bien sauf la redirection vers mon application après que Facebook ait obtenu des autorisations.
Une page vierge Safari est ouverte au lieu de rediriger vers mon application. Je lis dans le soja de nombreux forums et questions Stack Overflow sur un problème similaire dans iOS 9, qui est fixé à l'aide de ce code dans le AppDelegate:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id>
*)options {
return [[FBSDKApplicationDelegate sharedInstance]
application:application
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}
return YES;
}
je l'ai déjà vérifier que lorsque je donne des autorisations Facebook ce code fonctionne correctement, mais ne fonctionne toujours pas redirigés à mon application, redirect seulement à une nouvelle page blanche Safari où la seule option que j'ai est d'appuyer sur OK ou Terminé bouton qui me envoyer dans la méthode loginManager à la demande utilisateur a annulé cas
Il est mon code FBLoginManger
self.manager =[[FBSDKLoginManager alloc] init];
NSArray *facebookPermissions = @[@"email", @"public_profile", @"user_friends"];
if ([FBSDKAccessToken currentAccessToken] != nil) {
[self.manager logOut];
//return
}
[self.manager logInWithReadPermissions: facebookPermissions fromViewController: self handler: ^(FBSDKLoginManagerLoginResult* result, NSError* error) {
if (error != nil) {
//According to Facebook:
//Errors will rarely occur in the typical login flow because the login dialog
//presented by Facebook via single sign on will guide the users to resolve any errors.
NSLog(@"FACEBOOK LOGIN ERROR %@", error);
// Process error
[self.manager logOut];
} else if (result.isCancelled) {
// Handle cancellations
[self.manager logOut];
} else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
BOOL allPermsGranted = true;
NSArray *grantedPermissions = [[result grantedPermissions] allObjects];
NSString *lastObject = [grantedPermissions lastObject];
for (NSString *permission in facebookPermissions) {
for (NSString* grantedPerm in grantedPermissions) {
NSRange range = [permission rangeOfString:grantedPerm];
if ((range.length == 0) && (grantedPerm == lastObject)) {
allPermsGranted = false;
} else {
break;
}
}
}
if (allPermsGranted) {
// Do work
//NSString * fbToken = [[result token] tokenString];
NSString * fbUserID = [[result token] userID];
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:@"/me"
parameters:@{@"fields": @"id,name,email"}
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (error == nil) {
NSDictionary *dict = @{
@"email" : [result objectForKey:@"email"] ,
@"providerID" : fbUserID,
@"username" : [result objectForKey:@"name"],
@"provider" : @"facebook"
};
NSLog(@"DICT %@", dict);
[self.delegate loginWithCredentials:dict];
[self logUserLoggedInWithFacebookEvent];
} else {
NSLog(@"ERROR FACEBOOK %@", error);
}
}];
} else {
//The user did not grant all permissions requested
//Discover which permissions are granted
//and if you can live without the declined ones
NSLog(@"FACEBOOK LOGIN ERROR");
[self.manager logOut];
}
}
}];
La méthode est appelée, mais toujours tomber dans result.isCancelled
cas
canyou imprimer l'erreur 'NSLog (@ "FACEBOOK LOGIN erreur% @", erreur);' –
Ne laissez jamais tomber dans ce cas, redirect seulement à la page de safari, puis mon option unique est d'appuyer sur le bouton OK qui annule le résultat. @ Anbu.Karthik – origds
Regardez dans ce code https://drive.google.com/file/d/0B7lSqbQq9-WuYU9qNlhOdWczU2M/view?usp=sharing Identique à votre code. –