【無料 / 固定電話もOK】電話番号 認証 API
(あなたのWebサービスやアプリに電話番号認証を導入できます)

電話番号認証を簡単に行える無料のAPIです。
Webサービスなどに数ステップで電話番号認証の仕組みを導入できます。
費用負担はありません。認証ごとの課金も存在しません。
また、利用者からの着信を用いて認証するので、固定電話の電話番号でも認証できます。

電話番号認証のススメ(活用方法)

Webサービスを提供するとき、アカウントの本人確認をどのように実施するかは悩みものです。
メールアドレスやSNSアカウントで行うだけの認証では、捨てアドや捨て垢でいくらでも回避されてしまいますので、本人確認を実施している意味がほとんどありません。
そこで、メールアドレスやSNSアカウント認証よりももう少しだけ厳格に個人の認証を行いたいときに便利な手段が電話番号で認証を行うという手法です。
電話番号認証が使用される先としては、チャットアプリなどのSNSの登録、パスワードを忘れた場合に再発行する場合の認証、一人1回に限定したいクーポンの配布、などが考えられます。

今までであれば電話番号認証を導入するにはある程度の費用負担が必要でした。SMSを使用した認証方式であればおおむね1回の認証につき5円程度の負担が必要です。これは無料のサービスを提供する事業者にはかなりの痛手です。
ASEINetの無料APIであれば費用負担なく電話番号認証を導入することができます。


APIの使い方

@サービスの利用者は指定の電話番号(050-5329-3476)に電話を掛けます。
すると自動音声ガイダンスで確認コード(数字4桁)がアナウンスされます。
※認証を行う利用者は、利用者の契約プランによる所定の通話料金を負担することになります。

A利用者は認証を行うサービスの画面上で電話番号と音声ガイダンスにより取得した確認コードを入力します。
入力する画面はサービスの提供者が作成してください。(利用者がASEINetのAPIに直接送信することはありません)

Bサービスを提供しているサーバー上などでASEINetのAPIに入力された電話番号と確認コードを送信します。
電話番号と確認コードはHTTPrequest(POSTやGETなど)で送信できます。

CサービスではASEINetのAPIから得られた応答(認証成功または失敗)をもとに適切な案内を表示します。



APIの呼び出し方

APIの呼び出しはとても簡単です。
利用者が入力した電話番号と確認コードをASEINetのAPIにそのまま投げるだけで認証の可否がわかります。

APIのURL:http://api.aseinet.com/phoneVerify/request.php
必要なパラメータ
 電話番号:phoneNumber
 確認コード:pin

POSTでもGETでも問題ありません。「phoneNumber」には入力された電話番号を、「pin」には確認コードをいれてAPIを呼び出します。HTTPS接続でも使用可能です。
たとえばPHPを使用したWebサービス内で呼び出す場合は以下のようなコードで認証が行えます。
(このコードは安全性を考慮していませんので実際はもう少し質の高いコードを書くべきです)
この応答ではASEINetのAPIから"pass"という文字列が得られれば認証に成功したことがわかります。

<?php
    <...... 様々な処理>
    $retry=3; //HTTPエラーを考慮した再試行回数, 0=再試行しない
    for($i=0; $i<=$retry; $i++){
        $http_request = 'http://api.aseinet.com/phoneVerify/request.php?phoneNumber=';
        // ユーザーが入力した電話番号と確認コードをAPIに送信する
        $http_request .= $_POST["phoneNumber"].'&pin='.$_POST["pin"];
        $auth_contents = file_get_contents($http_request);
        if($auth_contents===false){
        }else{
            break;
        }
    }
    if( $auth_contents=="pass" ){ 
        <成功したときの処理> //電話番号認証が成功
    }else{
        <失敗したときの処理> //電話番号認証に失敗
    }
    <様々な処理 ......>
?>
この他の言語を使用する場合でも簡単な実装が可能です。
なお、実際に運用する場合はASEINetのサーバーが何等かの障害で応答しないことも考慮したほうがよいでしょう。(いつまでもASEINetサーバーの応答を待機しているとタイムアウトが発生してしまいます)
また、json=y をつけると、JSON形式で応答を得ることができます。JSON形式ではより多くの情報が得られます。
以下はその例です。
{
    "verify": true,
    "telephoneNumber": "080xxxxxxxx",
    "verifyTime": "yyyy-mm-dd xx:xx:xx",
    "pin": "1234",
    "apiType": "JSON"
}
認証に成功した場合は"verify"の値がtrueになります。
また、ユーザーが電話をかけた時刻も得ることができますので、30分以内の認証に限定したい場合などはこの情報を元に制御できます。
可能であればJSON形式を使用することをお勧めします。