集成 FirebasePhoneAuthUI 以进行电话号码身份验证

Posted

技术标签:

【中文标题】集成 FirebasePhoneAuthUI 以进行电话号码身份验证【英文标题】:Integrating FirebasePhoneAuthUI for phone number authentication 【发布时间】:2018-02-27 02:54:33 【问题描述】:

我们正在使用没有 Cocopods 的 firebase SDK,在集成 firebase 电话身份验证时,我们遇到了崩溃:-

错误:- 2017-09-18 19:30:46.123775+0530 NewFireBaseDummy[2174:475150] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法加载 NIB 捆绑:'NSBundle (已加载)' 名称为 'FUIPhoneEntryViewController'' * 第一次抛出调用栈:(0x1901aefe0 0x18ec10538 0x1901aef28 0x1967e6600 0x1966472d4 0x19641146c 0x1962dfb68 0x1962dfa9c 0x1000f8174 0x1000f3a38 0x1000f39a4 0x1000f1140 0x1001066b8 0x10008bed4 0x10008b9c8 0x10008bb04 0x1000d0754 0x1000d0ad8 0x100c71a50 0x100c71a10 0x100c76b78 0x19015d0c8 0x19015ace4 0x19008ada4 0x191af4074 0x196345058 0x10008dcb0 0x18f09959c) libc++abi.dylib:以未捕获的类型异常终止 NSException

import UIKit
import Firebase
import FirebaseAuthUI
import FirebasePhoneAuthUI

class ViewController: UIViewController, FUIAuthDelegate 

fileprivate(set) var auth:Auth?
fileprivate(set) var authUI: FUIAuth? //only set internally but get externally
fileprivate(set) var authStateListenerHandle: AuthStateDidChangeListenerHandle?

override func viewDidLoad() 
    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.
    self.auth = Auth.auth()
    self.authUI = FUIAuth.defaultAuthUI()
    self.authUI?.delegate = self
    self.authUI?.providers = [FUIPhoneAuth(authUI: self.authUI!)]


    self.authStateListenerHandle = self.auth?.addStateDidChangeListener  (auth, user) in
        guard user != nil else 
            self.loginAction(sender: self)
            return
        

    




override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


func loginAction(sender:AnyObject)
    //direct open the auth page
    let provider = self.authUI?.providers.first as! FUIPhoneAuth;
    provider.signIn(withPresenting: self);


func authUI(_ authUI: FUIAuth, didSignInWith user: User?, error: Error?) 
    guard let authError = error else  return 

    let errorCode = UInt((authError as NSError).code)

    switch errorCode 
    case FUIAuthErrorCode.userCancelledSignIn.rawValue:
        print("User cancelled sign-in");
        break

    default:
        let detailedError = (authError as NSError).userInfo[NSUnderlyingErrorKey] ?? authError
        print("Login error: \((detailedError as! NSError).localizedDescription)");
    



【问题讨论】:

【参考方案1】:

我不确定你的错误,但也许你错过了对 PhoneAuth 非常重要的东西。 也许您可以尝试按照 YouTube 上的本教程来弄清楚:https://www.youtube.com/watch?v=bujGsqBo4xk 它逐步描述了如何使用 Firebase 进行 PhoneAuth 希望对你有帮助

【讨论】:

我们可以通过 cocoapods 做到这一点。但是,如果我们在遇到此问题时通过手动将框架添加到项目中来做同样的事情。这是下面我们手动导入框架的链接。和同样的方式导入 FirebasePhoneui 和 FirebaseauthUi 框架链接:- mokacoding.com/blog/setting-up-firebase-without-cocoapods

以上是关于集成 FirebasePhoneAuthUI 以进行电话号码身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Laravel 管理 OAuth 刷新令牌?

使用 xcode 6 为 uitableviewcell 自动布局

R文本文件和文本挖掘...如何加载数据

dyndns 使用啥样的重定向类型?

前端开发中一些好用的chrome插件汇总

如何更改 Eclipse Content Assist(模板建议)窗口的字体