WhatsApp-webhook-endpointin vahvistaminen
Ennen minkään tapahtuman toimittamista Meta kutsuu endpointiasi GET-pyynnöllä, joka sisältää kentät hub.mode, hub.verify_token ja hub.challenge. Endpointin on verrattava tokenia ja palautettava challenge raakana vastausrunkona. Muuten toimitus ei ala koskaan.
Arvo, joka on toistettava vastausrunkona.
hub.mode-arvo vahvistuspyynnössä.
Ainoa skeema, jonka Meta vahvistaa. HTTP hylätään ennen kutsua.
Mitä Meta tarkalleen lähettää?
GET-pyynnön URL-osoitteeseesi kolmen kyselyparametrin kanssa. hub.mode-arvoksi asetetaan subscribe. hub.verify_token on token, jonka määritit kohdetta asettaessasi. hub.challenge on arvo, jonka Meta luo tätä yritystä varten.
Endpointin pitäisi verrata hub.verify_token-arvoa valitsemaasi tokeniin ja täsmäävissä tapauksissa vastata koodilla 200 niin, että hub.challenge on koko vastausrunko. Älä kääri sitä JSON-muotoon, lisää sen ympärille lainausmerkkejä tai päätä vastausta ylimääräiseen rivinvaihtoon, jonka jotkin sovelluskehykset lisäävät oletuksena.
Jos token ei täsmää, vastaa koodilla 403. Siinä koko protokolla, ja se on tarkoituksella pieni.
Miksi väärä vastaus epäonnistuu hiljaa?
Koska vahvistuksen epäonnistuminen ei ole virhe sinun järjestelmässäsi, vaan puuttuva tapahtuma Metan järjestelmässä.
Kun challengea ei toisteta oikein, Meta ei yksinkertaisesti aloita toimitusta kyseiseen kohteeseen. Palvelimesi palauttaa vahvistukseen koodin 200, lokisi osoittavat pyynnön saapuneen, eikä mikään hallintapaneeli ilmoita ongelmasta. Ainoa merkki on, etteivät viestit saavu. Useimmat tulkitsevat tämän Coexistence-ongelmaksi eivätkä kättelyongelmaksi.
Siksi vahvistaminen ennen kutsua kannattaa. Tarkistamme, että URL-osoite käyttää HTTPS:ää ja että verify token on annettu ennen Graph-pyynnön tekemistä. Näin virheellinen kohde epäonnistuu heti eikä näytä yhdistetyltä.
Mikä muu voi estää vahvistuksen?
Kolme asiaa, joilla ei ole mitään tekemistä koodin kanssa.
Endpointin edessä oleva tunnistautuminen. Yhdyskäytävä, basic auth -kerros tai IP-sallittujen osoitteiden lista hylkää Metan pyynnön, eikä Metalla ole tunnistetietoja lähetettäväksi. Vahvistusreitin on oltava käytettävissä ilman niitä.
Uudelleenohjaus. Meta kutsuu antamaasi URL-osoitetta, eikä 301-uudelleenohjaus kanoniseen isäntään johda kättelyn valmistumiseen. Anna lopullinen URL-osoite.
Myös vastauksen sarjallistava sovelluskehys voi estää vahvistuksen. Jos käsittelijä palauttaa merkkijonon ja kehys käärii kaiken JSON-muotoon, vastausrungon challenge-arvon ympärille tulee lainausmerkit, joten se ei täsmää.
Yleiset virheet
- JSON-muodon palauttaminen. Vastausrungon on oltava pelkkä challenge-arvo ilman mitään sen ympärillä.
- Endpointin sijoittaminen tunnistautumisen taakse. Metalla ei ole tunnistetietoja, joten pyyntö hylätään.
- Metalle annettu URL-osoite, joka uudelleenohjaa. Käytä lopullista osoitetta.
EasyCoexistence tarkistaa ennen Metan kutsumista, että kohde käyttää HTTPS:ää ja että verify token on annettu. Epäonnistunut kättely kirjataan yhteyden aikajanalle kohteen hylkäämisen sijaan.
Usein kysytyt kysymykset
Mitä tokenia pitäisi käyttää?
Mitä tahansa valitsemaasi merkkijonoa. Sen avulla endpointisi erottaa Metan pyynnön muiden URL-osoitteen oppineiden lähettämistä pyynnöistä.
Kuinka usein vahvistus tehdään?
Asetuksen yhteydessä ja aina, kun kohde määritetään uudelleen. Toimivaa endpointia ei vahvisteta jokaisen tapahtuman yhteydessä.
Voinko testata sen itse?
Kyllä. Kutsu omaa endpointiasi kolmella parametrilla ja tarkista, että vastausrunko palautuu täsmälleen challenge-arvona.
Entä jos palvelimeni oli pois käytöstä vahvistuksen aikana?
Kättely epäonnistuu eikä kohde aktivoidu. Sen tallentaminen uudelleen käynnistää vahvistuksen.
Lue lisää
Valmis aloittamaan?
Ota WhatsApp Coexistence käyttöön minuuteissa, ei kuukausissa. Sovellus toimii edelleen puhelimessa.
Aloita ilmainen kokeiluVahvistettu