FacebookSDK目标-c登录空白屏幕URL失败:" fbauth2:/"

时间:2017-09-28 10:50:36

标签: objective-c facebook-sdk-4.0

我正在使用objective-c在使用FacebookSDKLoginKit时开发应用程序,我正在用Facebook登录,并通过单击继续给予应用程序权限,之后webview返回到空白屏幕,我收到此错误: -canOpenURL:URL失败:" fbauth2:/" - 错误:"操作无法完成。 (OSStatus错误-10814。)"

我检查了项目中的所有内容:

1)我添加了LSApplicationQueriesSchemes

    <key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>

2)我添加了CFBundleURLSchemes

3)在AppDelegate中我添加了

 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                      openURL:url
                                            sourceApplication:sourceApplication
                                                   annotation:annotation];}

和didFinishLaunchingWithOptions

[[FBSDKApplicationDelegate sharedInstance] application:application
                         didFinishLaunchingWithOptions:launchOptions];

4)我已开启Keychain Sharing

5)当我按下FBSDKLoginButton

时,我的代码
_login = [[FBSDKLoginManager alloc] init];
[_login logOut];
[_login setLoginBehavior:FBSDKLoginBehaviorNative];
[_login logInWithReadPermissions: @[@"public_profile"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult* result, NSError*error)
 {
     if (error) {
         NSLog(@"Process error");
     }
     else if (result.isCancelled) {
         dispatch_async(dispatch_get_main_queue(), ^{
             UIAlertController * alert=   [UIAlertController
                                           alertControllerWithTitle:NSLocalizedString(@"Facebook Access Denied",@"errorLabel")
                                           message:NSLocalizedString(@"Please, recheck your Facebook configuration settings.",@"unknownError")
                                           preferredStyle:UIAlertControllerStyleAlert];
             UIAlertAction* okButton = [UIAlertAction
                                        actionWithTitle:NSLocalizedString(@"Close",@"okLabel")
                                        style:UIAlertActionStyleDefault
                                        handler:^(UIAlertAction * action) {
                                            return;
                                        }];
             [alert addAction:okButton];
             [self presentViewController:alert animated:YES completion:nil];
         });
     }
     else
     {
         NSLog(@"Logged in");
         [self pasrseFBData];
     }
 }];

**我使用的是最新的FBSDKCoreKit 4.27.0

1 个答案:

答案 0 :(得分:0)

对此有点想法..

<强> ONE: AppDelegate 中的#3 openUrl 中,您没有粘贴整个块:

- (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;
} 

详情请见the Facebook SDK Login documentation

<强> TWO: Info.plist 也需要进行编辑,如下所示:

<key>CFBundleURLTypes</key>
<array>
  <dict>
  <key>CFBundleURLSchemes</key>
  <array>
    <string>fb1234567891011</string>
  </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>1234567891011</string>
<key>FacebookDisplayName</key>
<string>NAME OF YOUR APP</string>

替换&#34; 1234567891011 &#34;两次使用您自己的Facebook App ID。如果您已登录,上面的Facebook SDK文档链接实际上会显示您的Facebook应用ID。请注意,在 CFBundleURLSchemes 下,它需要有&#34; fb &# 34;后跟身份证号码。

<强>三 在您的Facebook应用仪表板中,您需要添加应用捆绑ID ,并启用启用单一登录的复选框。上述FB文档链接中的 3a 3b 项目对此进行了描述。

<强> FOUR: 您的应用需要在Facebook信息中心设置为直播

<强> FIVE: 在Xcode的功能标签中启用钥匙串共享

<强> SIX: 包括 FBSDKCoreKit FBSDKLoginKit 框架。

<强> SEVEN: 在真实设备上测试而不是模拟器。