Verifikacija WhatsApp webhook endpointa
Pre slanja bilo kog događaja, Meta poziva vaš endpoint GET zahtevom koji sadrži hub.mode, hub.verify_token i hub.challenge. Endpoint mora da uporedi token i vrati hub.challenge kao sirovo telo odgovora. U suprotnom isporuka ne počinje.
Vrednost koju morate vratiti kao telo odgovora.
Vrednost polja hub.mode u zahtevu za verifikaciju.
Jedina šema koju će Meta verifikovati. HTTP se odbija pre poziva.
Šta Meta tačno šalje?
GET zahtev ka vašem URL-u sa tri parametra upita. hub.mode je postavljen na subscribe. hub.verify_token je token koji ste podesili prilikom postavljanja odredišta. hub.challenge je vrednost koju Meta generiše za ovaj pokušaj.
Vaš endpoint treba da uporedi hub.verify_token sa tokenom koji ste izabrali i, ako se podudaraju, odgovori kodom 200 tako da hub.challenge bude celo telo odgovora. Ne sme biti upakovan u JSON, ne sme imati navodnike oko sebe niti završni novi red koji neki okviri dodaju podrazumevano.
Ako se tokeni ne podudaraju, odgovorite kodom 403. To je ceo protokol i namerno je mali.
Zašto pogrešan odgovor ne prijavljuje grešku?
Zato što neuspešna verifikacija nije greška u vašem sistemu, već odsustvo verifikacije u Meti.
Kada challenge nije pravilno vraćen, Meta jednostavno ne počinje isporuku na to odredište. Vaš server vraća 200 na verifikaciju, dnevnici pokazuju da je zahtev stigao, a nijedna kontrolna tabla ne prijavljuje problem. Jedini znak je da poruke nikada ne stižu, što većina ljudi dijagnostikuje kao Coexistence problem, a ne kao problem rukovanja.
Zato vredi proveriti sve pre poziva. Proveravamo da li je URL HTTPS i da li je verify token prosleđen pre slanja Graph zahteva, pa neispravno odredište odmah pada umesto da izgleda povezano.
Šta još može blokirati verifikaciju?
Tri stvari koje nemaju veze sa kodom.
Autentifikacija ispred endpointa. Gateway, sloj osnovne autentifikacije ili lista dozvoljenih IP adresa odbiće Metin zahtev, a Meta nema kredencijale koje može da pošalje. Ruta za verifikaciju mora biti dostupna bez njih.
Preusmeravanje. Meta poziva URL koji ste naveli, a 301 ka kanonskom hostu ne prati se na način koji završava rukovanje. Navedite konačni URL.
I okvir koji serijalizuje odgovor. Vraćanje stringa iz rukovaoca koji sve upakuje u JSON proizvodi telo sa navodnicima oko challenge vrednosti, pa se ono ne podudara.
Česte greške
- Vraćanje JSON-a. Telo mora biti sirova vrednost challenge bez ičega oko nje.
- Postavljanje endpointa iza autentifikacije. Meta nema kredencijale i zahtev će biti odbijen.
- Davanje URL-a koji preusmerava. Koristite konačni URL.
EasyCoexistence proverava da li je odredište HTTPS i da li ima verify token pre poziva Mete, a neuspešno rukovanje beleži na vremenskoj liniji veze umesto da odbaci odredište.
Često postavljana pitanja
Koji token treba da koristim?
Bilo koji string koji izaberete. On omogućava vašem endpointu da razlikuje Metin zahtev od zahteva bilo koga ko sazna URL.
Koliko često se verifikacija obavlja?
Prilikom podešavanja i ponovo svaki put kada se odredište postavi. Ispravan endpoint se ne proverava ponovo pri svakom događaju.
Mogu li sam da ga testiram?
Da. Pozovite sopstveni endpoint sa ta tri parametra i proverite da li se telo vraća tačno kao vrednost challenge.
Šta ako je moj server bio nedostupan tokom verifikacije?
Rukovanje ne uspeva i odredište se ne aktivira. Ponovnim čuvanjem ponovo se pokreće provera.
Nastavite sa čitanjem
Spremni da počnete?
Podesite WhatsApp Coexistence za nekoliko minuta, a ne meseci. Aplikacija nastavlja da radi na telefonu.
Započnite besplatni probni periodProvereno na