我对SwiftUI有点陌生,遇到了一些我自己无法解决的问题。
所以我使用SwiftUI。并成功创建了一个带有firebasefacebook身份验证的登录页面。
所有的功能都很好,但我想自定义默认/内置的注销按钮。如果可能的话,只使用注销按钮。这就是我想把它改成的,它本质上只是一个带有一些文本和SF符号的Hstack
非常感谢的帮助
这是我用于身份验证的代码:
import SwiftUI
import FBSDKLoginKit
import Firebase
struct LoginView : UIViewRepresentable {
func makeCoordinator() -> LoginView.Coordinator {
return LoginView.Coordinator()
}
func makeUIView(context: UIViewRepresentableContext<LoginView>) -> FBLoginButton {
let button = FBLoginButton()
button.permissions = ["email", "public_profile"]
button.delegate = context.coordinator
return button
}
func updateUIView(_ uiView: FBLoginButton, context: UIViewRepresentableContext<LoginView>) {
}
class Coordinator : NSObject, ObservableObject,LoginButtonDelegate{
func loginButtonDidLogOut(_ loginButton: FBLoginButton) {
try! Auth.auth().signOut()
print("Did logout")
}
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) {(res , er) in
if er != nil{
print((er?.localizedDescription)!)
return
}
print("SUCCES! ")
}
}
}
}
}
你试过吗
Button(action: {
Auth.auth().signOut()
}) {
HStack{
Image(systemName: "envelope.fill")
.resizable()
.frame(width: 25, height: 17)
.foregroundColor(Color.orange.opacity(0.5))
Text("Logout")
.foregroundColor(Color.orange.opacity(0.5))
.fontWeight(.medium)
.font(.system(size: 16))
}
}