获取权限后的Facebook登录让Safari空白页打开,而不是重定向到我的应用程序在iOS 10和iOS 11

获取权限后的Facebook登录让Safari空白页打开,而不是重定向到我的应用程序在iOS 10和iOS 11

问题描述:

我正在我的应用程序中实施Facebook登录。获取权限后的Facebook登录让Safari空白页打开,而不是重定向到我的应用程序在iOS 10和iOS 11

所有的工作属性,除了Facebook获取权限后重定向到我的应用程序。

Safari空白页是打开的句柄,而不是重定向到我的应用程序。我在酱油许多论坛和了解iOS 9类似问题的其他堆栈溢出问题阅读,使用此代码在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; 
} 

我已经检查的时候,我给Facebook的权限,此代码工作正常,但仍然不重定向到我的应用程序,只重定向到一个新的Safari浏览器的空白页面,在这里,我唯一的选择是按OK完成按钮送我的loginManager方法将用户取消的请求情况下

(1) Allow Facebook to read permissions

(2) Redirect to a Safari blank page

还有就是我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]; 
     } 
     } 
    }]; 

的方法调用,但总是在result.isCancelled情况下

+0

其答案canyou打印错误'的NSLog(@“Facebook登录错误%@”,错误);' –

+0

在这种情况下切勿掉落,只能重定向到Safari浏览器页面,然后我唯一的选择是按OK按钮即取消结果。 @ Anbu.Karthik – origds

+0

查看此代码https://drive.google.com/file/d/0B7lSqbQq9-WuYU9qNlhOdWczU2M/view?usp=sharing与您的代码相同。 –

我已经解决了错误删除FBLoginButton和一个UIButton替换它丢弃哪些与我的调用FBLoginManager函数的IBAction相关联。

答案是基于对这个问题Facebook login page showing blank page in IOS 9@MuraliMohan