【问题标题】:-canOpenURL: failed for URL: "fbauth2:/" (OSStatus error -10814.)"-canOpenURL:URL 失败:“fbauth2:/”(OSStatus 错误 -10814。)“
【发布时间】:2018-03-01 09:21:27
【问题描述】:

我正在我的应用程序中添加 Facebook 和 Google 注册,但我遇到了这个问题

操作无法完成。 -10814

在 Facebook 登录中,我不知道如何解决,这是我的 openUrl 的应用委托代码:

 func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
        -> Bool {

            if let fbSDKAppId = FBSDKSettings.appID(), url.scheme!.hasPrefix("fb\(fbSDKAppId)"), url.host == "authorize" {
            var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,  open: url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!,annotation:options[UIApplicationOpenURLOptionsKey.annotation])
            return shouldOpen
            }
            else {
                return GIDSignIn.sharedInstance().handle(url,
                                                     sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
                                                     annotation: [:])
                }

            }

我能做什么?

【问题讨论】:

  • 尝试在 info.plist 中添加缺失的键
  • @SalmanGhumsani 我刚刚添加了它,但它不起作用
  • 你的应用什么时候崩溃了?
  • 10814 canOpenURL: not find your application Facebook. 时发生。你安装 Facebook 了吗?
  • 10814 Launch Services 数据库中没有应用程序符合输入条件。

标签: ios facebook


【解决方案1】:

info.plist 中设置的LSApplicationQueriesSchemes 属性为我解决了这个问题。
检查随附的屏幕截图:

【讨论】:

    【解决方案2】:

    现在我使用了从 here 下载的最新 SDK v4.26.0,并按照 link 的步骤安装 FB。我的代码是

    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    
    if ([[[UIDevice currentDevice] systemVersion] floatValue] <= 9) {
        // After iOS9 we can not use it anymore
        login.loginBehavior = FBSDKLoginBehaviorSystemAccount;
    } else {
        login.loginBehavior = FBSDKLoginBehaviorWeb;
    }
    
    NSArray *permission = [[NSArray alloc] initWithObjects:@"email",@"public_profile",@"user_friends", nil];
    NSLog( @"### running FB sdk version: %@", [FBSDKSettings sdkVersion] );
    
    [login logInWithReadPermissions:permission fromViewController:(UIViewController *)self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        [self removeActivityIndicatorWithBg:activityIndicator];
    
        if (error) {
            NSLog(@"Process error");
        } else if (result.isCancelled) {
            NSLog(@"Cancelled");
        } else {
            NSLog(@"Logged in%@",result.grantedPermissions);
        }
    }];
    

    这里我使用了FBSDKLoginBehaviorSystemAccount的登录行为,我得到了错误

    (- 错误:“操作无法完成。-10814)

    所以在我的模拟器或设备中不包含 facebook 系统设置中的帐户设置。然后它出现在以下块上

    if (error) {
        NSLog(@"Process error");
    }
    

    如果我打印错误,

    没有 Facebook 帐户。 没有配置 Facebook 帐户。您可以在“设置”中添加或创建 Facebook 帐户。

    所以我将 loginBehavior 从 FBSDKLoginBehaviorSystemAccount 更改为 FBSDKLoginBehaviorWeb,我得到了所有 OP 而没有错误

    【讨论】:

    • 我应该在哪里添加上面的代码?
    • @huseyin - 在您的 Facebook 登录按钮操作中
    【解决方案3】:

    使用选项添加openUrl 后工作:

    Facebook documentation

    请注意,application:openURL:options: 仅适用于 iOS 9 及更高版本。如果您正在使用旧版本的 iOS SDK 构建,您可以使用:

    - (BOOL)application:(UIApplication *)application 
                openURL:(NSURL *)url 
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation {
    
      BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
        openURL:url
        sourceApplication:sourceApplication
        annotation:annotation
      ];
      // Add any custom logic here.
      return handled;
    } 
    

    【讨论】:

    • 谢谢,除了我,我使用了 Swift,所以我添加了 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:])
    【解决方案4】:

    在这个thread 中,您可以找到一个问题以及针对此类错误的临时修复。

    【讨论】:

      猜你喜欢
      • 2019-02-10
      • 2019-01-28
      • 2020-07-24
      • 1970-01-01
      • 2019-02-18
      • 2018-04-05
      • 2016-03-27
      • 2016-01-26
      • 2016-01-04
      相关资源
      最近更新 更多