Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Account Verification with Authy, Node.js and Express

For new development, we encourage you to use the Verify API instead of the Authy API. The Verify API is an evolution of the Authy API with continued support for SMS, voice, and email one-time passcodes, an improved developer experience and new features including:

  • Twilio helper libraries in JavaScript, Java, C#, Python, Ruby, and PHP
  • Access via the Twilio CLI
  • Improved Visibility and Insights
  • Push authentication SDK embeddable in your own application

You are currently viewing the Authy API. The Authy API will continue to be maintained, but any new features and development will be on the Verify API. Check out the FAQ for more information and Verify API Reference to get started.

アプリケーションにユーザーアカウント検証を実装する準備はできましたか? どのような仕組みになっているのか概要を以下に示します。

  1. ユーザーはサインアップフォームに電話番号を含むデータを入力することで登録プロセスを開始します。
  2. The authentication system sends a one-time password to the user's mobile phone to verify the phone number.
  3. The user enters the one-time password into a form to complete registration.
  4. ユーザーに成功ページが表示され、アカウントが作成されたことを示すSMSを受診します。


これを行うには、以下の Twilio 駆動型 API を操作します。


  • Users Resource: You will need to create Authy users to send and verify one-time passwords.
  • SMSリソース: AuthyにワンタイムパスワードをSMS経由でユーザーに送信するよう指示します。
  • Verifyリソース: 登録時にWebフォームでユーザーによって入力されたトークンの検証に使用されます。


  • メッセージリソース:ユーザーがアカウントを作成した後に、Twilio を直接使用して確認メッセージをユーザーに送信します。




真っ先にやらなければならないのは、アプリケーションのユーザーに対するモデルオブジェクトを作成することです。Authy を使う 2FA チュートリアルUser モデルのコードもたくさん借用します。このアプリケーションでは、永続性のために MongoDB を使いますが、コードでは、MongoDB によってバックアップされる上位オブジェクトモデリングツールである Mongoose と主にインターフェイスします。

モデルの authyId プロパティーに注目してください。これは、Authy API との統合をサポートするために必要です。 このプロパティーはすぐには使用しませんが、Authyとの統合のために後々必要となります。

One of the properties on the User model is the password. It is not in scope for this tutorial, but take note: you'll probably want it later for logging in a returning user.


        Now that you've created your user model, let's check out the form template for creating a user.

        Take a look at the user registration form

        The New User Form Template

        When we create a new user, we ask for a name, e-mail address, password and mobile number including country code. In order to validate the user account we use Authy to send a one-time password via SMS to this phone number.


              Form template for user creation


              これでユーザーはログインしましたが、検証はまだです。次のステップでは、Authy を使ってユーザーを検証する方法について学びます。


              Authy の設定

              config.js には、アプリケーションの設定パラメーターがリストされています。ほとんどの設定パラメーターは、システム環境変数から取得されます。これは、機密に属する値(API キーなど)にアクセスするのに便利な方法です。これにより、それらの値を誤ってソースコントロールにチェックインすることが防止されます。

              Now, we need our Authy production key (sign up for Authy here). Once you create an Authy application, the production key is found on the dashboard:

              Authy ダッシュボード


                    次に、User モデルに移動して、Authy クライアントを設定し、インスタンスメソッドを作成してワンタイムパスワードを送信する必要があります。

                    Learn how to send a one-time token to a new user


                    When it comes time to actually send the user a verification code, we do that in a User model function.

                    Before sending the code, an Authy user needs to exist and correlate to our User model in the database. If the authyId for our user instance hasn't been set, we use the Authy API client to create an associated Authy user and store that ID.

                    Once the user has an authyId, we can send a verification code to that user's mobile phone using the Authy API client.


                          After the user receives the verification code, they will pass it to the application using this form.

                          Let's check out the controller that handles the form.

                          Handle form submission


                          このコントローラー関数はフォームの送信を処理します。 他のものより少し長くなりますが、その分多くのことを行なっています。 下記を行うために必要です:

                          • Load a User model for the current verification request.
                          • Use an instance function on the model object to verify the code that was entered by the user.
                          • If the code entered was valid, it will flip a boolean flag on the user model to indicate the account was verified.

                          Take a look at the User model to see the instance method that handles verifying the code with Authy.


                                Now let's see how we can use Authy to actually verify the code.

                                Verify the user's code with Authy


                                This instance function is a thin wrapper around the Authy client function that sends a candidate password to be verified. We call Authy's built-in verify function, and then immediately call a passed callback function with the result.


                                      This is a great start, but what if your code never reaches the end user's handset? Authy can help us to re-send a missing code.

                                      How to handle exceptions


                                      このコントローラー関数は、リクエストに関連付けられている User モデルをロードし、先に定義したものと同じインスタンス関数を使用してコードを再送信します。


                                            Resend a user's code


                                            To wrap things up, let's let the user know that their account has been verified via a success page and an SMS to their device.

                                            Wrap it up with a user success page!


                                            このコントローラー関数は、ユーザーのフルネームが含まれる Jade テンプレートをレンダリングし、ユーザーの verified プロパティーをチェックしてそのユーザーが検証されているかどうかを示します。


                                                  Show details about a user


                                                  This should suffice for confirmation in the browser that the user has been verified. Let's see how we might send a confirmation via text message.

                                                  Send a confirmation SMS with Twilio


                                                  Here, we add another instance function to the model that will send a text message to the user's configured phone number. Rather than just being a one-time password, this can be anything we wish.


                                                        Congratulations! You now have the power to register and verify users with Authy and Twilio SMS. Where can we take it from here?









                                                        このチュートリアルをお読みいただき、ありがとうございます。 ご意見やご感想などございましたら、ぜひお聞かせください。 Twitterからご連絡いただき、どんなものを構築されているかお聞かせください!

                                                        Jarod Reyes Agustin Camino Kelley Robinson Hector Ortega Kat King Jose Oliveros
                                                        Rate this page:


                                                        誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。