2016-09-05 33 views
1

Firebaseの認証について多くの質問がありましたが、いずれも助けになりませんでした(認証方法が少し違っていました)。私は経験豊かなiOS開発ではないので、コードだけでなくUXでも助けが必要です。以下は私のコードです:iOS - Firebase認証/電子メールでのログイン

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

これは私のログイン用の機能です。まず、私はログインページのフレームワークを使用しました(はい、自分自身を行うにはあまりにも怠惰ですhereから。 Firebaseをバックエンドサーバーとして使用してそのアカウントを保管しました。

ここで、ユーザーがシステムに既に存在するかどうかを確認する方法がわかりません。また、エラーが発生した場合、LFLoginController libには、エラーが発生するたびに使用するwrongInfoShake()という機能が用意されていますが、間違った説明を提供する必要があるかどうかわかりません。(は、AlertControlこれはUX質問btwです)。

タイプがSignUpに変更された場合、ユーザーがSignUpタイプを使用していても、その情報を使用してログインするための既存の電子メールとパスワードを入力すると問題はありませんか?

SignUpがオンになると、エラーは処理する必要がありますか?

答えて

2

あなたがここに質問のビットを持っていると私はそれらのすべてにお答えしようとするでしょう:

  1. ユーザーがすでに存在しているかどうかを確認するための最良の方法、場合、signInWithEmail()completionBlockcreateUserWithEmail()でありますエラーが発生した場合、これがケースの1つになる可能性があります。それでもメソッドが必要な場合は、fetchProvidersForEmail()というAPIへの新しい呼び出しがあり、プロバイダの配列を返します。あなたの場合は、電子メールのものです。

  2. 過剰使用のアラートコントローラを使用しないでください。Login was incorrectまたはAn error occuredなどのエラーラベルを表示するか、表示するエラーを表示してください。本当に必要でない限り、アラートを避けるようにしてください。

  3. 電子メールでサインアップしようとすると、ユーザはすでにUser already existsのエラーを取得することに慣れています.Upusの観点からは、明確で新しいアカウントとして考えるといくつかのエラーが発生しますそうではありません。ユーザーが存在することを示すラベルを表示するだけで、誰かが自分の電子メールに登録したことは非常に蓋然的ではありません。

  4. にサインアップすると、firebaseはE-mail already existsが、私はポイント3で述べたように、電子メールの処理が間違っていた場合、それはまたInvalid e-mailを与えることができ、エラーを与えることができます。このエラーと他のすべてのエラーは、ユーザーに何らかのメッセージを表示することによって処理する必要があります。そうしないと、ユーザーは混乱します。それらを処理するには、completionのエラーを確認してください。

1

あなたがチェックすることをお勧めしますFirebase UI Auth

「FirebaseUIドロップでUIを扱う認証ソリューションは、電子メールアドレスとパスワードを持つユーザーに署名に流れ、Googleはサインインを提供し、Facebookのログイン:Firebase Authの上に構築されます。

FirebaseUI認証コンポーネントは、モバイルデバイスやウェブサイトでの認証のベストプラクティスを実装しており、アプリケーションのサインインとサインアップの変換を最大限に活用できます。また、アカウントリカバリやアカウントのリンクなど、セキュリティを重視し、正しく処理するのにエラーが発生する可能性があるエッジケースも処理します。

FirebaseUIは、アプリケーションのビジュアルスタイルの残りの部分に合わせて簡単にカスタマイズすることができ、オープンソースなので、ユーザーエクスペリエンスの実現には制限がありません。 "

関連する問題