使用 FBSDK for iOS 登录冻结

Posted

技术标签:

【中文标题】使用 FBSDK for iOS 登录冻结【英文标题】:Login freezes using FBSDK for iOS 【发布时间】:2016-08-25 12:50:48 【问题描述】:

我有一个使用 Facebook 登录 (FBSDK 4.11.0) 的 swift 编写的 ios 应用程序。该应用程序正在生产中,FB-login 运行良好。

但是,在进行新更新时,我意识到我无法再使用 FB 登录或注册。在弹出的 web 视图中授权应用程序后,登录过程停止。它加载一个空白页面并静止不动。

以下代码与当前在应用商店的版本上完美运行的代码完全相同。我认为这可能与该应用程序当前处于开发状态有关,但在创建测试版并通过 testflight 下载后,我仍然遇到同样的问题。

这是我的代码。

func fbLoginInitiate() 
        if hasSeenPermissionPopup(LoginType.Facebook)
            Globals.mixpanel.track("Initiated FB login")
            FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email", "user_birthday"], fromViewController: self, handler: (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
                if (error != nil) 
                    // Process error
                    self.removeFbData()
                 else if result.isCancelled 
                    // User Cancellation
                    self.removeFbData()
                 else 
                    //Success
                    if result.grantedPermissions.contains("email") && result.grantedPermissions.contains("public_profile") && result.grantedPermissions.contains("user_birthday") 
                        //Do work
                        self.fetchFacebookProfile()
                     else 
                        Globals.mixpanel.track("Facebook login failed")
                        SweetAlert().showAlert("Ooops!", subTitle: "Noe gikk galt. Ta kontakt med Mojob dersom feilen vedvarer", style: AlertStyle.Warning)
                    
                
            )
        
    

回调中的错误为零,只有当我取消请求时才会显示结果。我没有对应用程序中的 info.plist 或与 FB 有关的任何其他设置进行任何更改。

如果有人遇到过类似的情况,我非常感谢您了解您是如何解决问题的。

登录的第一部分按预期工作

第二部分冻结

【问题讨论】:

您使用的是哪个 iOS 版本?在 iOS 10 上注意到了同样的情况.. 我使用的是 9.3.2 版本 谢谢!真的很感激! 【参考方案1】:

您的 AppDelegate 是否为 facebook SDK 正确配置?如果没有,您应该向其添加以下功能:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 
           return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
       

application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

查看此问题以获取更多信息:

https://github.com/facebook/react-native-fbsdk/issues/72

在问题中,他们指的是我找到正确设置的网站:

https://developers.facebook.com/docs/ios/getting-started#delegate

【讨论】:

以上是关于使用 FBSDK for iOS 登录冻结的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 FBSDK for iOS 获取 Facebook 好友列表?

如何在 iPhone 的 Swift iOS 中使用 FBSDK 获取用户电子邮件地址?

iOS FBSDK 上的 Facebook 登录

iOS FBSDK v4 loginbuttondidlogout 无法识别的选择器

如何检查用户是不是使用 FB SDK 4.0 for Android 登录?

FBSDK 登录 - SFSafariViewController 已禁用?