Melakukan Verifikasi SMS di Server

Untuk memverifikasi nomor telepon secara otomatis, Anda harus menerapkan kedua bagian server dari alur verifikasi. Dokumen ini menjelaskan cara menerapkan bagian server.

Server verifikasi telepon bertanggung jawab atas tiga tugas:

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

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

1. Membuat pesan verifikasi

Saat server Anda menerima permintaan untuk memverifikasi nomor telepon, pertama-tama lakukan pesan verifikasi yang akan Anda kirim ke perangkat pengguna. Pesan ini harus:

Jika tidak, konten pesan verifikasi dapat berupa apa pun yang Anda pilih. Sebaiknya buat pesan di mana Anda dapat dengan mudah mengekstrak satu kali kode Anda nanti. Misalnya, pesan verifikasi yang valid mungkin terlihat seperti berikut ini:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

Membuat kode sekali pakai

Anda dapat menerapkan kode sekali pakai dengan banyak cara, asalkan kode tersebut sulit ditebak dan Anda dapat menautkan kode itu ke pengguna atau nomor telepon ketika klien aplikasi mengirimkannya kembali ke server Anda. Anda harus membuat kode yang mudah diketik, untuk mengakomodasi situasi apa pun yang mungkin mengharuskan pengguna untuk mengetik kode secara manual.

Salah satu cara untuk menerapkan kode sekali pakai adalah dengan menghasilkan angka acak, yang Anda gunakan sebagai kunci dalam tabel {i>database<i}. Misalnya, Anda mungkin memiliki Verifikasi Tertunda seperti berikut ini:

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

Anda dapat menggunakan ID yang dienkode base32 sebagai kode sekali pakai.

Menghitung string hash aplikasi

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

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

    Lalu, impor sertifikat penandatanganan aplikasi ke dalam 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 atau 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.

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

  4. Tambahkan string hex ke nama paket aplikasi Anda, 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 SHA-256 total.

  6. Mengenkode base64 nilai biner jumlah SHA-256. Anda mungkin perlu mendekode jumlah SHA-256 dari format {i> output<i} terlebih dahulu.

  7. String hash aplikasi Anda adalah 11 karakter pertama yang dienkode dengan base64 {i>hash<i}.

Perintah berikut menghitung string hash dari produksi aplikasi Anda keystore:

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 AppSignatureHelper dari aplikasi contoh SMS retriever. Namun, jika Anda menggunakan kelas helper, pastikan untuk menghapusnya dari aplikasi setelah Anda mendapatkan string hash. Jangan gunakan string hash yang dikomputasi secara dinamis di klien dalam pesan verifikasi Anda.

2. Mengirim pesan verifikasi melalui SMS

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

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

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

3. Memverifikasi kode sekali pakai saat dikembalikan

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

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

Saat Anda mencatat status verifikasi pengguna dan menghapus kode sekali pakai dari {i>database<i}, verifikasi selesai.