Пользовательская кнопка входа в Facebook SwiftUI - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь настроить кнопку входа в Facebook, но не могу понять, как это сделать. Я хочу вызвать функцию входа в свое пользовательское действие кнопки, чтобы иметь возможность войти в систему.

        Button(action: {
                print("Pressed!")
            }){
               Text("Facebook")
               .frame(width: 100, height: 100)
               .foregroundColor(Color.white)
               .background(Color.blue)
               .clipShape(Circle())
            }

Это моя пользовательская кнопка, в которую я хочу войти через Facebook.

struct login : UIViewRepresentable {

func makeCoordinator() -> login.Coordinator {

    return login.Coordinator()
}

func makeUIView(context: UIViewRepresentableContext<login>) -> FBLoginButton {

    let button = FBLoginButton()
    button.permissions = ["email"]
    button.delegate = context.coordinator

    return button
}

func updateUIView(_ uiView: FBLoginButton, context: UIViewRepresentableContext<login>) {

}

class Coordinator : NSObject, LoginButtonDelegate {

    func loginButton(_ loginButton: FBLoginButton, didCompleteWith result: LoginManagerLoginResult?, error: Error?) {

        if error != nil {
            print((error?.localizedDescription)!)
            return
        }

        if AccessToken.current != nil {
            let credential = FacebookAuthProvider.credential(withAccessToken: AccessToken.current!.tokenString)



            Auth.auth().signIn(with: credential) { (response, error) in

                if error != nil {

                    print(error?.localizedDescription)
                    return
                }

                print("Success")
                print(response?.user.displayName)
                print(response?.user.photoURL)

            }
        }
    }

    func loginButtonDidLogOut(_ loginButton: FBLoginButton) {

        try! Auth.auth().signOut()
    }
}

}

Я думаю, что мне нужно обновить makeUIView, чтобы вернуть мою пользовательскую кнопку, но я не могу понять, как заставить ее работать должным образом. Спасибо.

...