Tutorial melakukan verifikasi nomor telepon di Go (Golang) dengan Twilio Verify
Verifikasi telepon adalah bagian penting dari proses onboarding pengguna: setiap kali Anda mengumpulkan metode kontak baru dari pengguna, Anda harus memastikan bahwa nomornya valid.
Anda juga dapat menggunakan workflow serupa untuk mengautentikasi pengguna secara berkelanjutan dengan kode sandi satu kali (OTP) yang dikirim ke ponsel pengguna. Ini adalah cara yang user-friendly untuk melakukan otentikasi utama atau dua faktor (2FA).
Postingan blog ini akan menunjukkan cara mengirim SMS OTP di Go menggunakan Verify API Twilio. Selain itu Anda juga dapat mengirim OTP melalui WhatsApp, panggilan suara, dan email dengan satu perubahan parameter.
Requirement untuk mengirim OTP
Untuk mengikuti postingan blog ini, Anda memerlukan:
- Akun Twilio. Daftar atau masuk.
- Layanan Verifikasi Twilio. Buat Layanan Verifikasi di konsol.
- Go Languange. Cara installnya ada di dokumentasi. Saya sendiri saat ini menggunakan versi go1.19.3
Buat proyek Golang baru untuk mengirim OTP
Buka terminal dan buat folder baru, lalu ubah ke folder proyek dengan menjalankan perintah berikut; Saya sendiri memberi nama folder verifikasi-go:
mkdir verifikasi-go
cd verifikasi-go
Inisialisasi modul baru dengan menjalankan perintah berikut. Nama modulnya terserah saja, tetapi saya menggunakan nama verifikasi-go:
go mod init verifikasi-go
Download Twilio Go Helper Library:
go get github.com/twilio/twilio-go
Terakhir, buat file baru tempat Anda dapat mulai menulis kode! Saya menamainya main.go. Tambahkan kode berikut untuk mengatur impor dan membuat instance klien Twilio:
package main
import (
"fmt"
"os"
"github.com/twilio/twilio-go"
openapi "github.com/twilio/twilio-go/rest/verify/v2"
)
var TWILIO_ACCOUNT_SID string = os.Getenv("TWILIO_ACCOUNT_SID")
var TWILIO_AUTH_TOKEN string = os.Getenv("TWILIO_AUTH_TOKEN")
var VERIFY_SERVICE_SID string = os.Getenv("VERIFY_SERVICE_SID")
var client *twilio.RestClient = twilio.NewRestClientWithParams(twilio.ClientParams{
Username: TWILIO_ACCOUNT_SID,
Password: TWILIO_AUTH_TOKEN,
})
Tetapkan variabel TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, dan VERIFY_SERVICE_SID Anda sebagai environment variables menggunakan detail masing-masing dari akun Twilio Anda. Anda dapat menemukannya di Konsol Twilio.
Kirim OTP
Selanjutnya, tambahkan fungsi berikut ke bagian bawah main.go. Kode ini akan mengirimkan OTP dengan memanggil Verification endpoint. Untuk contoh ini, “sms” dikodekan sebagai channel tetapi Anda dapat membuat ini dinamis untuk menerima “call”, “whatsapp” atau “email”! Pelajari lebih lanjut tentang opsi channel dalam dokumentasi.
func kirimOTP(to string) {
params := &openapi.CreateVerificationParams{}
params.SetTo(to)
params.SetChannel("sms")
resp, err := client.VerifyV2.CreateVerification(VERIFY_SERVICE_SID, params)
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Printf("Verifikasi terkirim: '%s'\n", *resp.Sid)
}
}
Verifikasi OTP
Selanjutnya tambahkan fungsi verifikasiOtp() di bawah ini ke akhir main.go, yang akan memeriksa OTP yang dikirimkan ke pengguna. Fungsinya menggunakan command prompt dan fmt.Scanln Go untuk menerima input pengguna sebagai interface sederhana. Dalam production, Anda akan membangun modal popup atau halaman input OTP di interface situs Anda untuk menerima input.
func verifikasiOtp(to string) {
var code string
fmt.Println("Silakan periksa ponsel Anda dan masukkan kode:")
fmt.Scanln(&code)
params := &openapi.CreateVerificationCheckParams{}
params.SetTo(to)
params.SetCode(code)
resp, err := client.VerifyV2.CreateVerificationCheck(VERIFY_SERVICE_SID, params)
if err != nil {
fmt.Println(err.Error())
} else if *resp.Status == "approved" {
fmt.Println("Selamat Anda terverifikasi!")
} else {
fmt.Println("Kode OTP salah!")
}
}
Kode ini menunggu input pengguna untuk mendapatkan kode OTP yang memanggil Verification Check endpoint melalui fungsi CreateVerificationCheck(). Kode kemudian memeriksa untuk memastikan bahwa statusnya approved. Jika pengguna memberikan kode yang salah, statusnya akan tetap “pending”.
Jalankan kode untuk menguji verifikasi
Terakhir, tambahkan fungsi main() di akhir main.go untuk menyatukan semuanya. Ganti nomor telepon Anda dalam format E.164 untuk mengujinya.
func main() {
to := "<masukan nomor telepon Anda di sini>"
kirimOTP(to)
verifikasiOtp(to)
}
Kembali di command prompt atau terminal jalankan go run main.go untuk mengeksekusi kode. Anda akan melihat output seperti ini:
$ go run main.go
Verifikasi terkirim: 'VEd123455403fa12345c4812345c812345'
Silakan periksa ponsel Anda dan masukkan kode:
077100
Selamat Anda terverifikasi!
Postingan asli dapat Anda baca disni:
Tutorial Golang Bahasa Indonesia dari Pemula sampai Mahir
- Video belajar Golang dari Eko Kurniawan Khannedy
2. Yang dapat Anda baca dari website