我正在使用Firebase框架使用标准的用户名和密码。
出现了登录界面,但现在不再显示。
Google sign UI仍然可以显示并正常工作。
它看起来如下:
它曾经喜欢:
用于复制问题的代码如下:
import UIKit
import Firebase
import FirebaseUI
class ViewController: UIViewController {
private var handle: AuthStateDidChangeListenerHandle?
@IBOutlet weak var userLbl: UILabel!
@IBAction func logout(_ sender: Any) {
let firebaseAuth = Auth.auth()
do {
try firebaseAuth.signOut()
} catch let signoutError as NSError {
debugPrint("Error signing out: \(signoutError)")
}
}
override func viewDidLoad() {
super.viewDidLoad()
handle = Auth.auth().addStateDidChangeListener({ (auth, user) in
if user == nil {
if let authUI = FUIAuth.defaultAuthUI() {
authUI.delegate = self
let providers: [FUIAuthProvider] = [
FUIGoogleAuth()
]
authUI.providers = providers
let authViewController = authUI.authViewController()
self.present(authViewController, animated: true, completion: {})
}
}
else{
self.userLbl.text = user?.displayName
}
})
}
}
extension ViewController:FUIAuthDelegate{
func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?){
if error != nil{
print("Error: \(error)")
return
}
self.userLbl.text = Auth.auth().currentUser?.displayName
}
}
PODS是:
# Pods for FBTest
pod 'Firebase/Core'
pod 'Firebase/Firestore'
pod 'FirebaseUI'
pod版本如下:
Using Bolts (1.9.0)
Using BoringSSL-GRPC (0.0.2)
Using FBSDKCoreKit (4.40.0)
Using FBSDKLoginKit (4.40.0)
Using Firebase (5.18.0)
Using FirebaseAnalytics (5.7.0)
Using FirebaseAuth (5.4.0)
Using FirebaseAuthInterop (1.0.0)
Using FirebaseCore (5.3.1)
Using FirebaseDatabase (5.1.0)
Using FirebaseFirestore (1.0.2)
Using FirebaseInstanceID (3.7.0)
Using FirebaseStorage (3.1.0)
Using FirebaseUI (6.1.1)
Using GTMSessionFetcher (1.2.1)
Using GoogleAppMeasurement (5.7.0)
Using GoogleSignIn (4.4.0)
Using GoogleToolboxForMac (2.2.0)
Using GoogleUtilities (5.3.7)
Using Protobuf (3.7.0)
Using SDWebImage (4.4.6)
Using TwitterCore (3.2.0)
Using TwitterKit (3.4.2)
Using gRPC-C++ (0.0.6)
Using gRPC-Core (1.17.0)
Using leveldb-library (1.20)
Using nanopb (0.3.901)
很好奇Google身份验证的工作方式,但股票标准身份验证已停止工作。
答案 0 :(得分:1)
这适用于当前版本5:
override func viewDidLoad() {
super.viewDidLoad()
handle = Auth.auth().addStateDidChangeListener({ (auth, user) in
if user == nil {
if let authUI = FUIAuth.defaultAuthUI() {
authUI.delegate = self
let providers: [FUIAuthProvider] = [
FUIEmailAuth(),
]
authUI.providers = providers
let provider = authUI.providers.first as! FUIEmailAuth;
provider.signIn(withPresenting: self, email: nil);
}
}
else{
self.userLbl.text = user?.displayName
}
})
}
答案 1 :(得分:-1)
此问题已解决。似乎实现方式已更改。
override func viewDidLoad() {
super.viewDidLoad()
handle = Auth.auth().addStateDidChangeListener({ (auth, user) in
if user == nil {
if let authUI = FUIAuth.defaultAuthUI() {
authUI.delegate = self
let authViewController = authUI.authViewController()
self.present(authViewController, animated: true, completion: {})
}
}
else{
self.userLbl.text = user?.displayName
}
})
}
并恢复为以前的版本:
pod 'Firebase/Core', '<5'
pod 'Firebase/Firestore', '<5'
pod 'FirebaseUI', '<5'