Nir*_*Nir 11 objective-c ios facebook-login facebook-ios-sdk ios10
在我的应用程序中,可以选择使用Facebook登录.
在iOS 9.3上,它可以正常工作.
我正在使用此代码启动登录过程:
- (void)FacbookLoginButtonPressed:(id)sender {
[self showLoader];
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
logInWithReadPermissions: @[@"public_profile", @"email"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Process error");
[self hideLoader];
[self showError:@"Error" message:@"Please try to use other login option"];
} else if (result.isCancelled) {
NSLog(@"Cancelled");
[self hideLoader];
[self showError:@"Error" message:@"Please try to use other login option"];
} else {
[self loginButton:sender didCompleteWithResult:result error:error];
NSLog(@"Logged in");
}
}];
}
Run Code Online (Sandbox Code Playgroud)
self是我的ViewController调用loginViewController,显示按钮,它继承自UIViewController
我的应用程序使用此库进行幻灯片导航:https://github.com/aryaxt/iOS-Slide-Menu
loginViewController屏幕显示有两个选项:
1.从常规屏幕(继承自UIViewController),有一个按钮,单击此代码运行:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"loginScreen";
[self presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
这项工作很好,我能够成功登录Facebook.
2.从其他屏幕也继承UIViewController,但这个屏幕是幻灯片菜单,我有这个代码AppDelegate
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MenuViewController *menu = [sb instantiateViewControllerWithIdentifier:@"MenuViewController";
[SlideNavigationController sharedInstance].rightMenu = menu;
Run Code Online (Sandbox Code Playgroud)
使用此选项,Facebook登录不起作用(空白屏幕)
我为了尝试使它有效的行动:
loginViewController从菜单(第二个选项)出现时,我在日志中唯一的东西是:
Presenting view controllers on detached view controllers is discouraged <loginViewController: 0x7622fb0>.
Run Code Online (Sandbox Code Playgroud)
我能做什么?
Nir*_*Nir 10
我终于修复了它,在MenuViewController我改变了呈现方式loginViewController:
[self.view.window.rootViewController presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
小智 10
在iOS 10中,您需要另一个openURL实现:
#ifdef __IPHONE_9_0
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {
[[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
return YES;
}
#else
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
[[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
return YES;
}
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4196 次 |
| 最近记录: |