-canOpenURL:URL失败:“fbauth2:/”(OSStatus错误-10814。)“

时间:2017-09-20 10:43:01

标签: ios facebook

我在我的应用程序中添加了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: [:])
                }

            }

我能做什么?

4 个答案:

答案 0 :(得分:6)

现在我使用从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而没有错误

答案 1 :(得分:1)

在为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;
} 

答案 2 :(得分:0)

info.plist中设置的

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-toolchains-plugin</artifactId> <version>1.1</version> <executions> <execution> <goals> <goal>toolchain</goal> </goals> </execution> </executions> <configuration> <toolchains> <jdk> <version>1.8</version> <vendor>oracle</vendor> </jdk> </toolchains> </configuration> </plugin> 属性为我解决了问题 查看附带的屏幕截图:

info.plist

答案 3 :(得分:0)

在此thread中,您可以找到问题以及此类错误的临时解决方法。