无需注册的 iOS Firebase OTP 验证

Posted

技术标签:

【中文标题】无需注册的 iOS Firebase OTP 验证【英文标题】:iOS Firebase OTP verification without Sign Up 【发布时间】:2021-06-21 01:22:20 【问题描述】:

我需要帮助以使用 Firebase 验证 OTP。 我设法收到带有 OTP 的短信,但是当我验证它时,我会自动注册,而且我只知道我注册后 OTP 是否有效 - 否则我会收到类似“无效 otp”的弹出窗口。 如何手动验证 otp?我的目标是打开另一个屏幕,用户可以在其中输入更多信息。

func verifyCode()
    let credential = PhoneAuthProvider.provider().credential(withVerificationID: self.CODE, verificationCode: code)
    print(credential)
    loading = true
    //here i just want to verify my OTP without signing in...
    Auth.auth().signIn(with: credential)  (result, err) in //here i am signing in...
        self.loading = false
        if let error = err
            let generator = UINotificationFeedbackGenerator()
            generator.notificationOccurred(.error)
            self.code = ""
            self.errorMsg = error.localizedDescription
            withAnimation self.error.toggle()
            return
        
        self.gotoRegistration = true
        withAnimationself.status = true
    

【问题讨论】:

【参考方案1】:

如果不让用户自动登录,就无法使用 Firebase 身份验证的电话/OTP 提供商。

但用户登录 Firebase 的事实并不意味着您必须授予他们访问您应用中所有部分/数据的权限。如果您希望他们提供更多信息,您可以在他们登录 Firebase 之前或之后这样做,并且就用户而言,使其成为同一注册流程的一部分。

比如:

// Sign the user in with Firebase
  // Check if the user has provider the additional registration information
    // If not, send them to the registration information screen
    // If so, send them to the next screen of the app

您还可以在后端代码中或(如果您使用 Firebase 的后端服务之一)在server-side security rules 中强制执行这些规则。

【讨论】:

以上是关于无需注册的 iOS Firebase OTP 验证的主要内容,如果未能解决你的问题,请参考以下文章

获取 Firebase 电话身份验证 OTP 时出错

如何使用 Firebase android 验证收到的用于手机号码验证的 OTP

在 Flutter 中使用 Firebase 电话身份验证超时后使 OTP 无效

Firebase 电话身份验证 OTP 消息模板问题

使用 Firebase 和 Flutter 通过 OTP 验证电话号码

firebase OTP是免费的还是使用费?