自定义Facebook登录按钮SwiftUI

时间:2020-04-21 05:29:37

标签: swift facebook swiftui coordinator-pattern

我正在尝试为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才能返回我的自定义按钮,但是我不知道如何使其正常工作。谢谢。

0 个答案:

没有答案