Mengesahkan endpoint webhook WhatsApp
Sebelum menghantar sebarang event, Meta memanggil endpoint anda dengan GET yang membawa hub.mode, hub.verify_token dan hub.challenge. Endpoint anda mesti membandingkan token tersebut dan memulangkan cabaran sebagai badan mentah. Selain itu, penghantaran tidak akan bermula.
Nilai yang mesti dipulangkan semula sebagai badan respons.
Nilai hub.mode dalam permintaan pengesahan.
Satu-satunya skim yang akan disahkan Meta. HTTP ditolak sebelum panggilan dibuat.
Apakah yang dihantar Meta sebenarnya?
Permintaan GET ke URL anda dengan tiga parameter pertanyaan. hub.mode ditetapkan kepada subscribe. hub.verify_token ialah token yang anda konfigurasikan semasa menetapkan destinasi. hub.challenge ialah nilai yang dijana Meta untuk percubaan ini.
Endpoint anda hendaklah membandingkan hub.verify_token dengan token yang anda pilih. Jika sepadan, respons 200 mesti mengandungi hub.challenge sebagai keseluruhan badan respons. Jangan bungkusnya dalam JSON, jangan letakkan tanda petikan di sekelilingnya dan jangan tambah baris baharu di hujung yang sesetengah rangka kerja tambah secara lalai.
Jika token tidak sepadan, respons 403. Itulah keseluruhan protokol dan ia sengaja direka ringkas.
Mengapakah jawapan salah gagal secara senyap?
Kerana kegagalan pengesahan bukan ralat dalam sistem anda, sebaliknya ketidakhadiran dalam sistem Meta.
Apabila cabaran tidak dipulangkan dengan betul, Meta tidak memulakan penghantaran ke destinasi itu. Pelayan anda memulangkan 200 untuk pengesahan, log anda menunjukkan permintaan telah tiba, dan tiada dashboard melaporkan masalah. Satu-satunya tanda ialah mesej tidak pernah tiba, yang biasanya didiagnosis sebagai masalah Coexistence, bukan masalah handshake.
Sebab itu pengesahan sebelum panggilan wajar dilakukan. Kami menyemak bahawa URL menggunakan HTTPS dan token pengesahan telah dibekalkan sebelum membuat permintaan Graph, supaya destinasi yang tidak sah gagal serta-merta dan bukannya kelihatan tersambung.
Apakah lagi yang boleh menyekat pengesahan?
Tiga perkara yang tiada kaitan dengan kod.
Pengesahan di hadapan endpoint. Gateway, lapisan pengesahan asas atau senarai benarkan IP akan menolak permintaan Meta, dan Meta tidak mempunyai kelayakan untuk diberikan. Laluan pengesahan mesti boleh dicapai tanpa semua itu.
Lencongan. Meta memanggil URL yang anda berikan, dan 301 ke hos kanonik tidak diikuti dengan cara yang melengkapkan handshake. Berikan URL akhir.
Selain itu, rangka kerja mungkin menyusun respons. Memulangkan rentetan daripada pengendali yang membungkus semuanya dalam JSON menghasilkan badan dengan tanda petikan di sekeliling cabaran, lalu tidak sepadan.
Kesilapan biasa
- Memulangkan JSON. Badan mesti mengandungi nilai cabaran mentah tanpa apa-apa di sekelilingnya.
- Meletakkan endpoint di belakang pengesahan. Meta tiada kelayakan dan akan ditolak.
- Memberikan Meta URL yang membuat lencongan. Gunakan URL akhir.
EasyCoexistence mengesahkan destinasi menggunakan HTTPS dan mempunyai token pengesahan sebelum memanggil Meta, serta merekod handshake yang gagal pada garis masa sambungan dan bukannya membuang destinasi.
Soalan lazim
Apakah token yang patut saya gunakan?
Sebarang rentetan yang anda pilih. Token ini membolehkan endpoint anda membezakan permintaan Meta daripada permintaan orang lain yang mengetahui URL tersebut.
Berapa kerapkah pengesahan berlaku?
Semasa persediaan dan setiap kali destinasi ditetapkan. Endpoint yang berfungsi tidak disahkan semula bagi setiap event.
Bolehkah saya mengujinya sendiri?
Ya. Panggil endpoint anda sendiri dengan tiga parameter tersebut dan semak bahawa badan respons kembali tepat seperti nilai cabaran.
Bagaimana jika pelayan saya tidak berfungsi semasa pengesahan?
Handshake gagal dan destinasi tidak diaktifkan. Menyimpannya semula akan menjalankan pengesahan sekali lagi.
Teruskan membaca
Sedia untuk bermula?
Sediakan WhatsApp Coexistence dalam beberapa minit, bukan berbulan-bulan. Aplikasi terus berfungsi pada telefon.
Mulakan Percubaan PercumaDisahkan pada