Melakukan Verifikasi SMS di Server

Untuk memverifikasi nomor telepon secara otomatis, Anda harus mengimplementasikan bagian klien dan server dalam alur verifikasi. Dokumen ini menjelaskan cara menerapkan bagian server.

Server verifikasi telepon bertanggung jawab atas tiga tugas:

  1. Membuat pesan verifikasi yang menyertakan kode sekali pakai dan memiliki format yang diharapkan oleh SMS Retriever API sisi klien
  2. Mengirim pesan verifikasi ke perangkat pengguna
  3. Memverifikasi kode sekali pakai saat dikirim kembali ke server dan menyelesaikan tugas pasca-verifikasi yang diperlukan backend Anda

Anda bebas menentukan cara aplikasi berinteraksi dengan server. Pendekatan umumnya adalah mengekspos REST API dengan dua endpoint: satu endpoint yang menerima permintaan untuk memverifikasi nomor telepon tertentu dan mengirimkan pesan verifikasi SMS, serta endpoint kedua yang menerima kode sekali pakai dari aplikasi Anda.

1. Membuat pesan verifikasi

Saat server Anda menerima permintaan untuk memverifikasi nomor telepon, buat pesan verifikasi yang akan Anda kirim ke perangkat pengguna terlebih dahulu. Pesan ini harus:

Jika tidak, isi pesan verifikasi dapat berupa apa pun yang Anda pilih. Sebaiknya buat pesan yang dapat Anda ekstrak dengan mudah kode sekali pakai nanti. Misalnya, pesan verifikasi yang valid mungkin terlihat seperti berikut:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

Membuat kode sekali pakai

Anda dapat menerapkan kode sekali pakai dengan berbagai cara, selama kode tersebut tidak dapat ditebak dan Anda dapat menautkan kode tersebut ke pengguna atau nomor telepon saat aplikasi klien mengirimkannya kembali ke server Anda. Anda harus membuat kode mudah diketik, untuk mengakomodasi situasi yang mungkin mengharuskan pengguna mengetik kode secara manual.

Salah satu cara untuk menerapkan kode sekali pakai adalah dengan menghasilkan angka acak, yang Anda gunakan sebagai kunci dalam tabel database. Misalnya, Anda mungkin memiliki tabel Pendingverifications seperti berikut:

ID Pengguna Akhir masa berlaku
123456789... 1234 14-3-2017 1:59

Anda dapat menggunakan ID berenkode base32 sebagai kode sekali pakai.

Menghitung string hash aplikasi

Layanan Google Play menggunakan string hash untuk menentukan pesan verifikasi mana yang akan dikirim ke aplikasi Anda. String hash dibuat dari nama paket aplikasi dan public key certificate aplikasi Anda. Untuk membuat string hash:

  1. Jika Anda menggunakan penandatanganan aplikasi oleh Google Play, download sertifikat penandatanganan aplikasi (deployment_cert.der) dari bagian Penandatanganan aplikasi di konsol Google Play.

    Kemudian, impor sertifikat penandatanganan aplikasi ke key store sementara:

    keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
    

    Jika Anda menandatangani APK secara langsung, lewati langkah ini.

  2. Dapatkan sertifikat penandatanganan aplikasi, baik yang Anda impor di atas maupun yang Anda gunakan untuk menandatangani APK secara langsung—sebagai string hex huruf kecil.

    Misalnya, untuk mendapatkan string hex dari keystore sementara yang dibuat di atas, ketik perintah berikut:

    keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
    

    Jika Anda menandatangani APK secara langsung, tentukan keystore produksi dan alias sertifikat Anda.

  3. Jika Anda telah membuat keystore sementara, hapus keystore.

  4. Tambahkan string hex ke nama paket aplikasi Anda, yang dipisahkan dengan satu spasi.

  5. Hitung jumlah SHA-256 dari string gabungan. Pastikan untuk menghapus spasi kosong di awal atau di akhir dari string sebelum menghitung jumlah SHA-256.

  6. Base64 mengenkode nilai biner sum SHA-256. Anda mungkin perlu mendekode sum SHA-256 dari format outputnya terlebih dahulu.

  7. String hash aplikasi Anda adalah 11 karakter pertama dari hash berenkode base64.

Perintah berikut menghitung string hash dari keystore produksi aplikasi Anda:

keytool -exportcert -alias PlayDeploymentCert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11

Atau, Anda bisa mendapatkan string hash aplikasi dengan class AppSignatureHelper dari aplikasi contoh SMS retriever. Namun, jika Anda menggunakan class helper, pastikan untuk menghapusnya dari aplikasi setelah mendapatkan string hash. Jangan gunakan string hash yang dihitung secara dinamis pada klien di pesan verifikasi Anda.

2. Kirim pesan verifikasi melalui SMS

Setelah Anda membuat pesan verifikasi, kirim pesan ke nomor telepon pengguna menggunakan sistem SMS apa pun.

Misalnya, lihat Verifikasi aplikasi menggunakan SMS Twilio di situs developer Twilio.

Saat perangkat pengguna menerima pesan ini, pesan akan diarahkan ke aplikasi Anda. Aplikasi akan mengekstrak kode sekali pakai dan mengirimkannya kembali ke server Anda untuk menyelesaikan proses verifikasi.

3. Memverifikasi kode sekali pakai saat ditampilkan

Server verifikasi nomor telepon biasanya memiliki endpoint kedua yang digunakan untuk menerima kode sekali pakai dari aplikasi klien. Saat server menerima kode sekali pakai dari aplikasi Anda di endpoint ini, lakukan hal berikut:

  1. Pastikan kode sekali pakai valid dan belum habis masa berlakunya.
  2. Catat bahwa pengguna yang ditautkan ke kode sekali pakai telah menyelesaikan verifikasi nomor telepon.
  3. Hapus data database kode sekali pakai, atau dengan cara lain, pastikan kode yang sama tidak dapat digunakan lagi.

Saat Anda mencatat status verifikasi pengguna dan menghapus kode sekali pakai dari database, verifikasi selesai.