我使用Facebook Graph API时遇到问题 . 连接由 login.swiftlogin.swift 中进行 .

My Facebook login button code:

public func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!)
{
    loginAlert.isHidden = false

    if error != nil {
        print(error.localizedDescription)
        return
    } else if (result.isCancelled){ // Canceled by user
        print("user canceled sign up")
        loginAlert.text = "Canceled"
    } else {

        let credential = FIRFacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)

        FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in // Sign in
            if error != nil {
                print(error!.localizedDescription)
                return
            }
            self.ref.child("Users").child(user!.uid).child("Name").setValue(user?.displayName)
        })

        print("user logged with facebook -> WalkThrough")

        loginAlert.text = "Successfuly logged in!"


        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(NSEC_PER_SEC) * 2) / Double(NSEC_PER_SEC), execute: { () -> Void in

            transitionSegue.segue.switchToWalkThrough() // Segue
        })
    }
}

然后我试图从 profile.swift 中的Graph API获取数据 .

My fetch data function:

func getUserFacebookDataAndFriends() {
    if (FBSDKAccessToken.current() != nil) {
        let parameters = ["fields": "email, id, name"]
        let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: parameters)

        _ = graphRequest?.start { connection, result, error in
            // If something went wrong, we're logged out
            if (error != nil) {
                // Clear email, but ignore error for now
                return
            }



        } // End of graph request
    }
}

但它直接返回 . 从Facebook获取数据的唯一方法是在用户登录过程中 . 我认为当用户已经登录时应用程序丢失了facebook令牌,然后Firebase在保存Facebook用户时接管 .

有人有解决方案吗?