Как связать данные для входа в Facebook с именем пользователя, адресом электронной почты, фотографией в базе данных Firebase? - PullRequest
0 голосов
/ 15 мая 2019

Я настраиваю вход в 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)
        }
    }
}
...