初始Parse FB登录时没有FB访问令牌

时间:2015-10-05 23:40:13

标签: facebook swift parse-platform token

我使用PFFacebookUtils.logInWithPermissions登录我的应用程序但是,我第一次登录实际登录时工作正常,但我收到FB错误code = 2500 An active access token must be used to query information about the current user。这会导致任何graphRequests失败。

如果我然后将代码重新编译到设备,则不会发生此错误,并且所有graphRequests都可以正常工作。为什么应用在第一次登录时没有获得访问令牌?此外,如果我从设备中完全删除了应用程序并重新安装,则整个过程将再次启动(首次尝试时出现错误代码= 2500)。

也许值得注意的是,这并没有发生在以前版本的Parse和FB SDK中。我刚刚开始将这个应用程序移动到iOS9,并且当这个问题出现时就是这样。

Xcode 7.0.1,Parse SDK v1.8.5,FacebookSDKs-iOS-20150910

1 个答案:

答案 0 :(得分:1)

我能够通过首先调用FBSDK登录方法,然后调用Parse SDK登录方法(在FBSDK回调中)来解决此问题:

@IBAction func facebookButtonAction(sender: AnyObject) {

    // Ensure that PFUser == nil - just in here because I heard it can help with some possible issues
    PFUser.logOut()

    let permissions = ["public_profile", "email", "user_friends"]

    // First, login with FB’s SDK
    let login: FBSDKLoginManager = FBSDKLoginManager()
    login.logInWithReadPermissions(permissions, handler: {(result: FBSDKLoginManagerLoginResult!, error: NSError!) in

        if (error != nil) {
            NSLog("Process error")
        } else {
            if result.isCancelled {
                NSLog("Cancelled")
            } else {
                NSLog("Logged in")

                // Then with Parse’s, upon FB login success
                PFFacebookUtils.logInWithPermissions(permissions) { (user, error) -> Void in

                    if let user = user {
                        if user.isNew {
                            print("User signed up and logged in through Facebook!”)
                            //... 
                        } else {
                            print("User logged in through Facebook!")
                            //... 
                        }
                    } else {
                        print("Uh oh. The user cancelled the Facebook login.")
                        //... 
                    }
                } 
            }
        }
    })
}