Node.js

バックエンドへのネットワーキング

以下のKotlin関数は、モバイルクライアントがバックエンドサーバーと通信し、Verify APIを使用して電話番号認証を実行する方法を定義しています。このプロセスは主に3つのステップで構成されています:

  1. 電話番号を送信することで認証プロセスを開始。
  2. バックグラウンドで自動的に行われるサイレント認証の結果をチェックする。
  3. 認証コード(無言で受信、またはSMSなどのフォールバック)を送信して認証を完了する。

各関数はコルーチン内部で実行され、次のようなネットワーク操作を行う。 IO dispatcher メインスレッドのブロックを避けるためである。

検証開始

この関数は、ユーザの電話番号をバックエンドに送信することで、検証プロセスを開始します。その後、バックエンドは Vonage Verify API 経由で検証を開始し、2 つの値で応答します:

  • request_id:検証リクエストの一意の識別子。
  • check_url:サイレント認証の結果を確認するためのURL。

サイレント認証の確認

検証を開始した後、この関数はサイレント認証を初期化する。 check_url を受信する。サイレント認証が成功した場合、サーバーは検証コードで応答し(いくつかのリダイレクトの後)、それを使って検証プロセスを完了することができる。

コードを送信

この関数は、検証コードをバックエンドに送信し、検証プロセスを完了させます。バックエンドは Verify API を使用してコードを検証し、検証に成功したかどうかを boolean で返します。

suspend fun submitCode(requestId: String, code: String): Boolean = withContext(Dispatchers.IO) {
    val client = OkHttpClient()

    val requestJson = mapOf("request_id" to requestId, "code" to code)
    val requestBody = Gson()
        .toJson(requestJson)
        .toRequestBody("application/json".toMediaType())

    val request = Request.Builder()
        .url("$BACKEND_URL/check-code")
        .post(requestBody)
        .build()

    val response = client.newCall(request).execute()

    if (!response.isSuccessful) {
        throw IOException("Code verification failed with code ${response.code}")
    }

    val responseBody = response.body?.string()
        ?: throw IOException("Empty response from server")

    val json = Gson().fromJson(responseBody, JsonObject::class.java)

    return@withContext json.get("verified")?.asBoolean ?: false
}

これらの機能を配置することで、Androidアプリはバックエンドに接続し、Vonage Verifyを使用して電話番号認証プロセスを完了することができます。次のステップでは通常、UIで成功または失敗を処理し、適切なメッセージを表示したり、それに応じてユーザーをリダイレクトしたりします。