我正在运行使用Facebook SDK(4.9.1)的问题,如果没有系统帐户,它将在应用浏览器中打开以进行登录.
FBSDKLoginManager *manager = [[FBSDKLoginManager alloc] init]; manager.loginBehavior = FBSDKLoginBehaviorSystemAccount; [manager logInWithReadPermissions:@[@"public_profile",@"email",@"user_friends"] fromViewController:controller handler:^(FBSDKLoginManagerLoginResult *result,NSError *error) { if (error) { success(kFacebookStatusFailed); } else if (result.isCancelled) { success(kFacebookStatusCancelled); } else { success(kFacebookStatusSuccess); } }];
我已正确完成了here定义的所有必需的info.plist设置.
问题是当它使用inapp浏览器登录时,实际上是使用调试找到的SafariViewController.它经历了所有登录过程,但最终它陷入了一个白色的空白屏幕并且没有消失,请参见下面的截图
已经尝试了所有可能的步骤,但无法克服它.但是当我设置新项目时,没有任何东西只有上面的登录代码和正确的设置,所有工作正常.
Fresh项目和原始项目的唯一区别是应用程序中使用的不同框架的数量,如Crashlytics,Fabric,Instabug,Google Frameworks等.有什么理由我应该怀疑这些框架导致问题,我想不.那么,可能是什么问题,任何遇到同样问题并能帮助我的人都将不胜感激.
谢谢.
解决方法
我遇到了同样的问题.将其添加到AppDelegate:
在AppDelegate.m中
>在应用程序中:didFinishLaunchingWithOptions:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; }
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; }
我不知道SafariViewController是否检查应用程序:openURL:sourceApplication:annotation但这对我有用.
试试看.我希望这个对你有用.
资料来源:https://developers.facebook.com/docs/ios/getting-started