Untuk memverifikasi nomor telepon secara otomatis, Anda harus menerapkan bagian klien dan server dalam alur verifikasi. Dokumen ini menjelaskan cara menerapkan bagian server.
Server verifikasi telepon bertanggung jawab atas tiga tugas:
- Membuat pesan verifikasi yang menyertakan kode sekali pakai dan memiliki format SMS Retriever sisi klien yang diharapkan
- Mengirim pesan verifikasi ke perangkat pengguna
- Memverifikasi kode sekali pakai saat dikirimkan kembali ke server dan menyelesaikan tugas pasca-verifikasi yang diperlukan backend Anda
Anda yang menentukan cara aplikasi berinteraksi dengan server. Pendekatan yang umum adalah mengekspos REST API dengan dua endpoint: satu yang menerima permintaan untuk memverifikasi nomor telepon tertentu dan mengirim pesan verifikasi SMS, dan endpoint kedua yang menerima kode satu kali dari aplikasi Anda.
1. Membuat pesan verifikasi
Saat server menerima permintaan untuk memverifikasi nomor telepon, pertama-tama buat pesan verifikasi yang akan Anda kirim ke perangkat pengguna. Pesan ini harus:
- Tidak lebih dari 140 byte
- Berisi kode sekali pakai yang dikirim klien kembali ke server Anda untuk menyelesaikan alur verifikasi (lihat Membuat kode sekali pakai)
- Sertakan string hash 11 karakter yang mengidentifikasi aplikasi Anda (lihat Menghitung string hash aplikasi Anda)
Jika tidak, konten pesan verifikasi dapat berupa apa saja yang Anda pilih. Sebaiknya buat pesan yang dapat Anda gunakan dengan mudah untuk mengekstrak kode sekali pakai di lain waktu. Misalnya, pesan verifikasi yang valid dapat terlihat seperti berikut:
Your ExampleApp code is: 123ABC78FA+9qCX9VSu
Membuat kode sekali pakai
Anda dapat menerapkan kode sekali pakai dengan berbagai cara, asalkan kode tersebut tidak dapat digunakan 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 mengamati situasi apa pun yang mungkin mengharuskan pengguna mengetik kode secara manual.
Salah satu cara untuk mengimplementasikan kode sekali pakai adalah dengan menghasilkan angka acak, yang Anda gunakan sebagai kunci dalam tabel database. Misalnya, Anda mungkin memiliki tabel Menunggu Verifikasi seperti berikut:
ID | Pengguna | Akhir masa berlaku |
---|---|---|
123456789... | 1234 | 2017-3-14 1:59 |
Anda dapat menggunakan ID berenkode base32 sebagai kode sekali pakai.
Menghitung string hash aplikasi Anda
Layanan Google Play menggunakan string hash untuk menentukan pesan verifikasi mana yang akan dikirimkan ke aplikasi Anda. String hash terdiri dari nama paket aplikasi Anda dan sertifikat kunci publik aplikasi Anda. Untuk membuat string hash:
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 penyimpanan kunci sementara:
keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
Jika Anda menandatangani APK secara langsung, lewati langkah ini.
Dapatkan sertifikat penandatanganan aplikasi—baik yang Anda impor di atas maupun yang digunakan 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.
Jika Anda telah membuat keystore sementara, hapus saja.
Tambahkan string hex ke nama paket aplikasi Anda, yang dipisahkan dengan satu spasi.
Hitung jumlah SHA-256 string gabungan. Pastikan untuk menghapus spasi kosong di awal atau akhir dari string sebelum menghitung sum SHA-256.
Base64-mengenkode nilai biner dari jumlah SHA-256. Anda mungkin perlu mendekode jumlah SHA-256 dari format outputnya terlebih dahulu.
String hash aplikasi Anda adalah 11 karakter pertama dari hash yang dienkode dengan 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 fetchr. 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 dalam pesan verifikasi Anda.
2. Kirim pesan verifikasi melalui SMS
Setelah membuat pesan verifikasi, kirim pesan ke nomor telepon pengguna menggunakan sistem SMS.
Misalnya, lihat Verifikasi aplikasi menggunakan SMS Twilio di situs developer Twilio.
Saat perangkat pengguna menerima pesan ini, pesan tersebut akan diarahkan ke aplikasi Anda. Aplikasi mengekstrak kode sekali pakai dan mengirimkannya kembali ke server untuk menyelesaikan proses verifikasi.
3. Verifikasi kode sekali pakai saat dikembalikan
Server verifikasi nomor telepon biasanya memiliki endpoint kedua yang digunakan untuk menerima kode sekali pakai kembali dari aplikasi klien. Saat server Anda menerima kode sekali pakai dari aplikasi di endpoint ini, lakukan hal berikut:
- Verifikasikan bahwa kode sekali pakai valid dan belum habis masa berlakunya.
- Mencatat bahwa pengguna yang ditautkan ke kode sekali pakai telah menyelesaikan verifikasi nomor telepon.
- Hapus rekaman database 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 database, verifikasi selesai.