使用Facebook-IOS-SDK(4.0.1)result.isCancelled设置使用浏览器

2019-10-22 16:27发布

我使用Facebook的-IOS-SDK(4.0.1)与自定义按钮进行登录。 我执行下面的代码

- (IBAction)fbButtonClicked:(UIButton *)sender {
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    if (error) {
        // Process error
    } else if (result.isCancelled) {
        // Handle cancellations
    } else {
        // If you ask for multiple permissions at once, you
        // should check if specific permissions missing
        if ([result.grantedPermissions containsObject:@"email"]) {
            // Do work
            if ([FBSDKAccessToken currentAccessToken]) {


                [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/friends" parameters:nil]
                 startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result2, NSError *error) {

                     if (!error) {
                         NSLog(@"fetched user:%@", result2);
                     }
                 }];
            }
        }
    }
}];

}

如果我有一个设备上安装Facebook应用程序,然后代码工作正常。 当我没有安装Facebook应用程序,那么Facebook是在浏览器中打开。 在这里,“result.isCancelled”设置为“YES”,我没有得到需要的结果。

Answer 1:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                        openURL:url
                                              sourceApplication:sourceApplication
                                                     annotation:annotation];
}

需要在appDelegate.m



Answer 2:

对我来说,原因是不同的

下面的线造成result.isCancelled总是真的... IDK的为什么

[login logInWithReadPermissions:@[@"public_profile", @"email", @"gender"] 

切换到这之后...它的工作

[login logInWithReadPermissions:@[@"public_profile"] 


文章来源: Using Facebook-iOS-SDK (4.0.1) result.isCancelled is set when using a browser