Firebase Auth UI 未在 iOS(Swift) 中显示

mok*_*258 3 ios firebase swift firebase-authentication

我想试用 Firebase Auth UI,我正在关注官方文档。文档(至少对于 iOS 而言)非常混乱,有些内容已经过时(导入命名不正确等)。现在我只想在我的测试应用程序开始时显示 Firebase AuthUI 屏幕。我在下面试过

import UIKit
import FirebaseAuthUI
import FirebaseFacebookAuthUI
import FirebaseTwitterAuthUI

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        if let authUI = FUIAuth.defaultAuthUI() {
            authUI.delegate = self

            // Setup login provider ( Need to import these seperately )
            authUI.providers = [ FUIFacebookAuth(), FUITwitterAuth() ]

            let authViewController = authUI.authViewController()
            present(authViewController, animated: true, completion: {})
        }
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

extension ViewController: FUIAuthDelegate {
    func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?) {
        // (Keep empty for now)
    }
}
Run Code Online (Sandbox Code Playgroud)

authViewController没有以某种方式呈现,我不知道为什么。我尝试将两个身份验证的东西都放在两者中viewDidLoadviewWillAppear但没有任何效果。

我也尝试过谷歌搜索并查看其他教程等,但没有解决我的问题。

如果有人能指出我的错误或至少指出我正确的方向,那就太好了。谢谢

Edit1:我尝试在当前放入完成处理程序,但它没有运行,但authViewController不是nil

Gle*_*enn 7

您正试图在您的 中显示一个新的控制器/屏幕viewWillAppear,这意味着您的屏幕尚未完全加载。所以应该有一个来自 Xcode 的警告,看起来像这样:

警告:尝试呈现不在窗口层次结构中的视图!

现在,将你的代码移到里面viewDidAppear,像这样:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    if let authUI = FUIAuth.defaultAuthUI() {
        authUI.delegate = self

        // Setup login provider ( Need to import these seperately )
        authUI.providers = [ FUIFacebookAuth(), FUITwitterAuth() ]

        let authViewController = authUI.authViewController()
        present(authViewController, animated: true, completion: {})
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该有效。:)