2017-09-10 5 views
1

ユーザをデータベースに追加する前にユーザの電子メールを確認する方法はありますか? 私の究極の目標は、ユーザーが最初に電子メールアドレスを入力してから「Verify Email address」ボタンを押すSignUpフォームを作成することです。この時点で確認メールが送信され、ユーザーはメールアドレスを確認するために内部からのリンクをたどります。さて、アプリケーションに戻ると、ユーザーには続行ボタンがあり、電子メールが確認されない場合、ユーザーは登録することができません。そうでなければ、ユーザーは登録することができます。createUserより前のFirebase sendEmailVerification

どうすればよいですか? これまでのドキュメントでは、createUserを作成してcurrentUser.sendEmailVerificationを使用する必要があると書かれていますが、確認の前にユーザーを作成する必要はありません。 完了ブロックの使用についても考えましたが、ユーザーが[続行]ボタンを押すまで、登録を延期する必要があるため、これをどのように動作させるかはわかりません。

おかげ

Auth.auth().createUser(withEmail: email, password: password, completion: {(user: User?, error) in 

      if error != nil { 
       print(error!) 
       return 
      } 

      guard let uid = user?.uid else { 
       return 
      } 


      let ref = Database.database().reference(fromURL: "https://project/") 
      let values = [ 
       "email": email, 
       "userName": userName, 
       "name": name, 
       "birthDate": birthDate, 
       "phoneNumber": phoneNumber] 

      let userReference = ref.child("users").child(uid) 
      userReference.updateChildValues(values, withCompletionBlock: {(err, ref) in 
       if err != nil{ 
        print(err!) 
        return 
       } 

       print("Successfully added user to database") 
      }) 

      let usedUserReference = ref.child("users-Used").child(userName) 
      usedUserReference.setValue(uid, withCompletionBlock: {(err, ref) in 
       if err != nil{ 
        print(err!) 
        return 
       } 

       print("Successfully added user to cannot be used-again list") 
      }) 

     }) 
+0

ユーザーが確認されるまでアクションを実行するだけの場合は、ユーザーがサインインしてそのユーザーのemailVerifiedプロパティがtrueのときにその操作を行います。ユーザーを作成し、電子メールの確認要求を送信する必要はありません。 –

答えて

1

あなたはFirebase認証でこれを行うことはできません。そのレコードは、電子メールに応答したときに実際に検証されたユーザーに関する適切なコンテキストを電子メール検証に与える「コンテナ」なので、最初に作成する必要があります。

emailVerifiedプロパティを使用して、特定のユーザーアカウントが確認済みかどうかを確認することができます。これにより、エンドユーザーに検証に関するさまざまな経験を与えることができます。

+0

ありがとう、ありがとう。それでは、検証を開始するにはどうしたらいいですか?その後私はemailVerifiedを使うことができます。これらすべてが検証されていない場合、データベースにユーザーを追加することはありません –

+0

私の答えを再度読んでください。検証を行うためには、ユーザオブジェクトを追加する必要があります。回避策はありません。 –

+0

ユーザーの電子メールを自分のデータベースに追加する前に確認する方法はありますか?または、それらを追加し、それらが削除されたことが確認されない場合、リンクをクリックしている間にスレッドを一時停止し、キャンセルしない場合はどうしますか? –

関連する問題