Ruby on railsとTwilioを使用した電話番号の検証

かつて、電話番号を確認する作業に直面しました。 そして、GitHubに星がない( そしてハブに招待する )ので、宝石を作ることにしました。



画像



Twilioサービスは、便利で安価なため、SMSゲートウェイとして選択されました。 このビジネスに数時間費やした後、私にとって非常に便利な宝石であることが判明しました。



それをインストールするには、gemfileに追加する必要があります。



gem "twilio_phone_verification"
      
      





次に、コマンドを実行します。



 bundle install
      
      





そして



 rails g twilio_phone_verification:install [USER_CLASS]
      
      





USER_CLASSは、電話チェックを追加するクラスです。 注:テキストメッセージ "Hello、{{name}} ..."を送信できるように、このクラスには名前フィールドが必要です 。 これにより、2つのファイルが作成されます。



config / initializers / twilio_phone_verification.rb設定ファイル。Twilioからキーと電話番号を入力する必要があります



 TwilioPhoneVerification.configure do |config| config.account_sid = ENV.fetch("TWILIO_ACCOUNT_SID") # Paste account id here config.auth_token = ENV.fetch("TWILIO_AUTH_TOKEN") # Paste your twilio auth token here config.from = ENV.fetch("TWILIO_NUMBER") # Paste your twilio number here end
      
      





およびdb / migrate / 000000000000000_add_phone_to_users.rb移行により、必要なフィールドが作成されます。



 class AddPhoneToUsers < ActiveRecord::Migration[5.0] def self.up add_column :users, :phone, :string add_column :users, :phone_confirmation_token, :string add_column :users, :phone_confirmed_at, :datetime add_column :users, :phone_confirmation_sent_at, :datetime add_index :users, :phone, unique: true end def self.down remove_column :users, :phone remove_column :users, :phone_confirmation_token remove_column :users, :phone_confirmed_at remove_column :users, :phone_confirmation_sent_at end end
      
      





次に、コマンドを実行します。



 rails db:migrate # rails 5 rake db:migrate # rails < 5
      
      





そして、必要なメソッドが追加されるようにモデルにコンサーンを追加します。



 class User < ActiveRecord::Base include TwilioPhoneVerification::Phonable end
      
      





これにより、4つの主なメソッドが追加されます。phone_confirmed? 電話が確認されたかどうかに応じて、 trueまたはfalseを返します



send_phone_confirmationはコードを生成し、 テキストメッセージを送信します 。 SMSが送信された場合は{success:true}を返し、送信されなかった場合はfalseを返します。 新しいSMSが生成されるたび。 また、コードは1分間に1回しか送信できません。



confirm_phone_by_code(code)trueを返し、コードが正しい場合は電話番号を検証し、そうでない場合はfalseを検証します



confirm_phoneは、コードを確認せずに電話番号を検証します。



メソッドがfalseを返す場合、エラーは.errorsに追加されます



2つのタイムスタンプもあります。



電話が確認されたときのphone_confirmed_at

最後のSMSが送信されたときのphone_confirmation_sent_at



Githubリポジトリ



以上です。 ご清聴ありがとうございました。



All Articles