我使用Facebook Graph API时遇到问题 . 连接由 login.swift
在 login.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用户时接管 .
有人有解决方案吗?