【问题标题】:Firebase Auth UI is not presented in iOS(Swift)iOS(Swift)中未显示 Firebase Auth UI
【发布时间】:2018-07-15 06:06:42
【问题描述】:

我想试用 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)
    }
}

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

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

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

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

【问题讨论】:

    标签: ios swift firebase firebase-authentication


    【解决方案1】:

    您正尝试在您的 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: {})
        }
    }
    

    这应该可行。 :)

    【讨论】:

    • 谢谢!我花了很多时间在上面。现在我明白为什么 React Hooks 很棒了。
    猜你喜欢
    • 2020-07-17
    • 2019-08-19
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多