我正在使用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
答案 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:强> 在真实设备上测试而不是模拟器。