Я настраиваю вход в Facebook в своем приложении и хочу, чтобы данные для входа в Facebook (имя, адрес электронной почты, фотография и т. Д.) Соединялись с базой данных Firebase (имя пользователя, photoURL и т. Д.)
Вот код для входа в Facebook:
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil {
print(error)
return
}
showEmailAddress()
}
func showEmailAddress() {
let accessToken = FBSDKAccessToken.current()
guard let accessTokenString = accessToken?.tokenString else { return }
let credentials = FacebookAuthProvider.credential(withAccessToken: accessTokenString)
Auth.auth().signIn(with: credentials, completion: { (user, error) in
if error != nil {
print("Something went wrong with our FB user: ", error ?? "")
return
}
print("Successsfully logged in with our user: ", user ?? "")
})
FBSDKGraphRequest(graphPath: "/me", parameters: ["fields" : "id, email, name, first_name, last_name, picture.type(large)"]).start { (connection, result, error) in
if error != nil {
print("Failed to start graph request:", error ?? "")
return
}
print(result ?? "")
}
}
@objc func playerItemReachEnd(notification: NSNotification) {
player.seek(to: CMTime.zero)
}
Как я могу получить данные для входа в Facebook и сохранить пользователя в базе данных Firebase?
func saveProfile(username:String, profileImageURL:URL, completion: @escaping ((_ success:Bool)->())) {
guard let uid = Auth.auth().currentUser?.uid else { return }
let databaseRef = Database.database().reference().child("users/profile/\(uid)")
let userObject = [
"username": username,
"photoURL": profileImageURL.absoluteString
] as [String:Any]
databaseRef.setValue(userObject) { error, ref in
completion(error == nil)
}
}
}