Интерфейс аутентификации Firebase - PullRequest
0 голосов
/ 10 марта 2019

Я использую стандартное имя пользователя и пароль с помощью платформы Firebase.

Пользовательский интерфейс входа в систему появлялся, но больше не появлялся.

Пользовательский интерфейс знака Google по-прежнему отображается и работает.

Это выглядит следующим образом:

enter image description here

Раньше нравилось:

enter image description here

Код для репликации проблемы следующий:

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'

Версии модуля:

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, но стандартная аутентификация перестала работать.

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Работает с текущей версией 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
            }
        })
    }
0 голосов
/ 10 марта 2019

Это исправлено.Кажется, реализация изменилась.

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...