Pada setiap proses otentikasi biasanya diperlukan verifikasi pengguna, umumnya verifikasi dilakukan via email ataupun SMS OTP (One Time Password). Pada aplikasi android verifikasi via SMS lebih disukai karena prosesnya terbilang lebih mudah dan lebih cepat. Disini saya akan coba sharing cara mengimplementasikan SMS OTP menggunakan SMS Retriever API dari Google.
Artikel ini hanya akan lebih fokus membahas implementasi dari sisi Android. Untuk implementasi dari sisi server silahkan baca dokumentasi resmi.
SMS Retriever API
SMS Retriever API merupakan bagian dari Google Play Services. API ini memungkinkan kita untuk mendeteksi SMS yang masuk secara otomatis untuk kemudian kita gunakan pada proses verifikasi pengguna. Keuntungan menggunakan API ini salah satunya adalah adalah kita tidak perlu menggunakan android.permission.RECEIVE_SMS lagi untuk dapat mengakses SMS yang masuk, selain itu metode ini ini juga sudah tidak direkomendasikan karena alasan untuk melindungi privasi pengguna.
Implementasi Sisi Android
Tambahkan komponen Play Services Auth ke build.gradle di dalam folder app
Buat BroadcastReceiver untuk handle konten sms yang akan masuk
Konfigurasikan kelas SMSReceiver dan jalankan SmsRetriever pada Activity tempat kita untuk menginput kode OTP
Kode diatas melakukan setup pada method startSMSRetriever untuk kemudian mengambil kode OTP pada method onOTPReceived. Jangan lupa juga untuk melakukan unregister SMSReceiver di method onDestroy.
Pengujian
Sebelum melakukan pengujian pada kode yang sudah kita buat, kita perlu melakukan setup 11-character hash untuk mengidentifikasi sms yang masuk. Penjelasan lengkap tentang ini dapat dilihat di dokumentasi ini, tapi jika menurut kalian menggunakan command-line cukup rumit, disini kita bisa coba cara lain yaitu menggunakan class helper.
buat kelas AppSignatureHelper, kelas ini bertujuan untuk melakukan generate 11-caracter hash berdasarkan package-name dan certificate yg kita gunakan.
Jalankan kelas ini pada Activity Launcher
Jalankan aplikasi, kita akan menemukan 11-caracter hash di logcat, kira-kira formatnya seperti ini
Kode aA2MtPvtEex inilah yang akan kita gunakan sebagai identifier di konten sms nanti. Selanjutnya kita bisa melakukan simulasi menerima sms masuk dengan emulator bawaan android studio. Konten sms yang kita gunakan pada contoh ini adalah OTP dengan 5 digit.
Jalankan aplikasi, lalu kirim sms simulasi pada activity untuk input OTP, kode OTP akan langsung terinput.
Contoh kode sumber yang lengkap dapat kalian cek pada repositori ini.