繁体   English   中英

iOS - Firebase授权/使用电子邮件登录

[英]iOS - Firebase Authorization/login with email

我在Firebase中看到了很多关于授权的问题,但没有一个帮助( 授权方式有点不同 )。 我不是那么有经验的iOS开发,所以我不仅需要在代码中提供帮助,还需要在UX中提供帮助。 以下是我的代码:

func loginDidFinish(email: String, password: String, type: LFLoginController.SendType) {

    // Server call implementation here
    if type == .Login {
        if user.exists { // check if user exists
            FIRAuth.auth()?.signInWithEmail(email, password: password, completion: {
                navigationController?.popViewControllerAnimated(true)
            })
        } else {
            self.controller.wrongInfoShake()
        }
    } else { // type == .SignUp
        if user.exists { // check if user exists
            FIRAuth.auth()?.signInWithEmail(email, password: password, completion: { (user, error) in
                //
            })
        } else {
            FIRAuth.auth()?.createUserWithEmail(email, password: password, completion: { (user, error) in
                //
            })
        }
    }

    print(email)
    print(password)
    print(type)

    // handling errors
    if email == "" && password == "" {
        controller.wrongInfoShake()
    } else {
        navigationController?.popViewControllerAnimated(true)
    }
}

这是我登录的功能。 首先,我从这里使用了登录页面的框架( 是的,我自己也懒得自己做 )。 我使用Firebase作为后端服务器来存储该帐户。

现在,我不知道如何检查用户是否已经存在于系统中。 另外,如果发生任何错误, LFLoginController lib提供了一个名为wrongInfoShake()函数,我每次发生错误时都会使用它,但我不确定是否应该提供错误的描述( 表示出现AlertControl )( 这是UX问题btw )。

当类型更改为SignUp时 ,即使用户使用类型SignUp,当用户键入已经存在的使用该信息登录的电子邮件和密码时,它是否可以?

当SignUp继续时,我应该处理任何错误吗?

你在这里有一些问题,我会尝试回答所有这些问题:

  1. 检查用户是否已存在的最佳方法是在signInWithEmail()createUserWithEmail()completionBlock中,如果发生错误,您可能知道这可能是其中一种情况。 如果您仍然希望有一个方法,那么有一个名为fetchProvidersForEmail()的API调用,它返回一组提供者,在您的情况下是电子邮件提供者。

  2. 不要使用警报控制器,这将过度使用,只显示一个错误标签,说明Login was incorrect ,或An error occured ,或者您想要显示的任何错误。 除非确实需要,否则尽量避免警报。

  3. 用户已经习惯于在尝试使用他的电子邮件注册时收到User already exists的错误,并且从UX的角度来看,它会导致一些错误,因为他会将其视为一个清晰的新帐户,所以没有,只是显示一个标签,说明用户存在​​,其他人已经注册了他的电子邮件是非常不可能的。

  4. 注册时,firebase可以提供E-mail already exists的错误,就像我在第3点中提到的那样,如果电子邮件处理错误,它也可以提供Invalid e-mail 应该通过向用户显示一些消息来处理这个和所有其他错误,否则他会感到困惑。 要处理它们,只需检查completion的错误。

您可能需要查看Firebase用户界面身份验证

“FirebaseUI提供了一种即插即用的解决方案,可以处理用户使用电子邮件地址和密码,Google登录和Facebook登录进行签名的UI流程。它构建于Firebase Auth之上。

FirebaseUI Auth组件在移动设备和网站上实施身份验证的最佳做法,可以最大限度地为您的应用进行登录和注册转换。 它还处理边缘情况,如帐户恢复和帐户链接,这些情况可能是安全敏感的,并且容易出错以便正确处理。

FirebaseUI可以轻松定制,以适应应用程序的其他视觉风格,并且它是开源的,因此您不必限制实现您想要的用户体验。“

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM