使用 iOS9 重新编译时,Facebook 正在返回任何内容

Posted

技术标签:

【中文标题】使用 iOS9 重新编译时,Facebook 正在返回任何内容【英文标题】:Facebook is returning anything when recompiling with iOS9 【发布时间】:2015-12-24 12:25:10 【问题描述】:

我在使用 Facebook SDK 编译 ios 8.4 时遇到问题,因此我升级到 Xcode 7.1 并使用 Facebook Sdk 4.6。我正在按照以下代码进行登录。它给了我奇怪的体验,有时它会打开 SafariViewController,有时它会同时打开弹出视图和 SafariViewController,有时它只会打开弹出视图。

在任何情况下,我尝试登录我都没有获取数据

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult 结果:FBSDKLoginManagerLoginResult!,错误:NSError!)

或在

fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self, handler: (result, error) -> Void in if (error == nil)

我也关注并添加了 NSTransportExceptions

代码

在 ViewDidload 中我定义了这个

    fblogin.delegate = self
    fblogin.readPermissions = ["public_profile", "email", "user_friends"]

fblogin 是登录按钮

@IBAction  func loginFb(sender:AnyObject)

    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
    fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
    fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self, handler:  (result, error) -> Void in
        if (error == nil)
            let fbloginresult : FBSDKLoginManagerLoginResult = result
            if fbloginresult.grantedPermissions != nil  //Here we have to check that the set contains value or not
                if(fbloginresult.grantedPermissions.contains("email"))
                
                    self.getFBUserData()
                    //fbLoginManager.logOut()
                
            
        
    )

func getFBUserData()
    NSLog("Called")
    if((FBSDKAccessToken.currentAccessToken()) != nil)
        FBSDKGraphRequest(graphpath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler( (connection, result, error) -> Void in
            if (error == nil)
                self.dict = result as! NSDictionary
                print(result)

                print(FBSDKAccessToken.currentAccessToken().tokenString)
                //NSLog(self.dict.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as! String)
            
        )
    

我遇到了Facebook is not returning data in didCompleteWithResult in iOS 9 的问题,所以我升级到 Xcode 7

【问题讨论】:

最新的 Facebook sdk 是 4.8 你尝试升级了吗?尝试再次关注 fb 入门指南,看看您是否错过了任何步骤 也可以尝试不带空格的参数值,例如"id,name,first_name,last_name,email" 我试过 man 但是它用 SafariViewController 打开,在我验证之后,它没有关闭 safariviewcontroller,没有重定向到应用程序.. 仅在 v4.5 中它会重定向到应用程序。 4.6 之后它使用 sfsafaricontroller。您可以强制使用 4.5 来解决此问题 我将总结我的 cmets 作为答案,如果他们帮助你,请接受它 【参考方案1】:

为了提出有效的字段请求,它们需要没有空格,例如 "id,first_name,last_name,email"

关于切换到 Facebook 应用程序而不是显示 SFSafariViewController 您需要使用他们更改此内容的 v4.6 之前的任何 Facebook SDK

【讨论】:

不..这不会导致问题..我只是将 FBSDKLoginButton 的类更改为普通按钮,它在 4.5 上工作良好,我不知道... 这就是我所说的。他们在 4.6 中更改了流程,因此之前的任何 SDK 都可以为您工作 @KingBabar...问题仅出在 FBSDKLoginButton 和 iOS 4.6 上。我将 sdks 版本更改为 4.5,然后将我的按钮设为普通按钮,而不是 FBSDKLoginButton,它开始工作了。

以上是关于使用 iOS9 重新编译时,Facebook 正在返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章

无法识别的选择器在 iOS9 上的 facebook sdk 4.6 中发送到 facebook 登录管理器的实例

iOS 9 未登录 Facebook 登录?

更新到 IOS 9 后无法登录 Facebook

IOS 9.2 Xcode 7.2 Facebook 登录问题

Facebook 使用 Parse SDK 登录(iOS 9、Xcode 7.1、Swift 2.1)

Facebook iOS 9 SDK 登录重定向到 Safari 上的 mbasic.facebook.com