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

时间:2016-09-05 20:17:50

标签: ios swift login firebase firebase-authentication

我在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)
    }
}

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

  5. 中的错误

答案 1 :(得分:1)

您可以查看Firebase UI Auth

" FirebaseUI提供了一个插入式身份验证解决方案,可以处理用户使用电子邮件地址和密码,Google登录和Facebook登录进行登录的UI流程。它建立在Firebase Auth。

之上

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

FirebaseUI可以轻松定制,以适应应用程序的其他视觉风格,并且它是开源的,因此您无法实现所需的用户体验。"

相关问题