呼び出し方は本家のAPI使う方法や先人のnpmパッケージ使う方法とかあるが、今回は先人のnpmパッケージを利用してみる。
ちなみにTwilioでは2つの電話番号認証機能があり、どちらを使うかはケースバーケースのようです。
Authy API
Authyが提供するAPIはSMS送信以外での2FAに対応していますが、今回はSMS送信による認証を試してみます。
準備
Twilioに登録
Twilioに登録して利用できるようにしておく。無料枠もあるがすぐに消費してしまいます・・・。
Authyのプロジェクト作成とAPIの取得
左メニューからAuthyを選択肢、新規プロジェクトを作成、設定にてPRODUCTION API KEYを取得します。
APIの機能(利用の流れ)
利用方法は簡単で、主な利用APIは下記の2つ。
- verification_start()でSMS経由でCode送信
- verification_check()でCode検証
あとは、
- verification_status()というAPIで状態を確認
することもできる。
実装
まず、モジュールをインストールします。
npm install--save authy
で、実装。
以下のコードではめんどくさいの一気に記述していますが1)と2)は同時に実行することはできません。
まず、2)をコメントアウトして実行し、SMSが届くか見ましょう。そして、1)をコメントアウトして、Codeを設定した状態で2)をコメントインして実行します。
//取得したAPIで初期化varauthy=require('authy')('MswmXqxxxxxxxxxxxxxxxxxxxxxxxxxxx');constphoneNumber='9012345678';constcountryCode='81';constverificationCode='000000';//受け取ったものを入れる//1)smsでcode送信authy.phones().verification_start(phoneNumber,countryCode,{via:'sms',locale:'ja',code_length:'6'},(err,res)=>{if(err)throwerr;console.log(res);});//2)受け取ったコード認証authy.phones().verification_check(phoneNumber,countryCode,verificationCode,(err,res)=>{if(err)throwerr;console.log(res);});//3)ステータス確認authy.phones().verification_status(phoneNumber,countryCode,(err,res)=>{if(err)throwerr;console.log(res);})スムーズにうまく動きました。
メモ
- 一度認証しても、再度送信するとstatusはpendingになるようです(まあ、当然ですが)。
- 料金は国内3キャリア向けに$0.08円(まあ10円)。
- あくまで電話番号の実在確認なので、会員管理システム等は別途用意しておく必要がある。
- 専門サービスだけあって090と記述しても送信してくれる。090-1234-5678とハイフンがあっても処理してくれる。