WhatsApp webhook एन्डपोइन्ट प्रमाणीकरण
कुनै पनि event डेलिभर गर्नुअघि Meta ले hub.mode, hub.verify_token र hub.challenge सहितको GET तपाईंको एन्डपोइन्टमा पठाउँछ। तपाईंको एन्डपोइन्टले टोकन जाँच गरेर challenge लाई raw body का रूपमा फर्काउनुपर्छ। अन्य केही फर्काएमा डेलिभरी सुरु हुँदैन।
प्रतिक्रिया body का रूपमा फर्काउनुपर्ने value
प्रमाणीकरण अनुरोधमा hub.mode को value
Meta ले प्रमाणीकरण गर्ने एक मात्र scheme। कल हुनुअघि HTTP अस्वीकार हुन्छ।
Meta ले ठ्याक्कै के पठाउँछ?
तपाईंको यूआरएलमा तीन query parameter सहितको GET अनुरोध। hub.mode को value subscribe हुन्छ। destination सेट गर्दा तपाईंले कन्फिगर गरेको टोकन hub.verify_token मा हुन्छ। hub.challenge यस प्रयासका लागि Meta ले बनाएको value हो।
तपाईंको एन्डपोइन्टले hub.verify_token लाई तपाईंले रोजेको टोकनसँग जाँच गर्नुपर्छ। मिलेमा, hub.challenge लाई पूरै response body बनाएर 200 प्रतिक्रिया दिनुहोस्। यसलाई JSON मा नराख्नुहोस्, वरिपरि उद्धरणचिह्न नराख्नुहोस्, र केही framework ले स्वचालित रूपमा थप्ने अन्तिम newline पनि नराख्नुहोस्।
टोकन नमिलेमा 403 प्रतिक्रिया दिनुहोस्। यही सम्पूर्ण protocol हो, र यसलाई जानाजानी सानो राखिएको छ।
गलत उत्तर किन चुपचाप असफल हुन्छ?
किनकि प्रमाणीकरण असफल हुनु तपाईंको प्रणालीको त्रुटि होइन, Meta को प्रणालीमा भएको अनुपस्थिति हो।
challenge सही रूपमा फर्काइएन भने Meta ले त्यस destination मा डेलिभरी सुरु गर्दैन। तपाईंको सर्भरले प्रमाणीकरणमा 200 फर्काउँछ, लगमा अनुरोध आएको देखिन्छ, र कुनै ड्यासबोर्डले समस्या देखाउँदैन। देखिने एक मात्र लक्षण म्यासेज नआउनु हो, जसलाई धेरैजसोले handshake समस्या नभई Coexistence समस्या ठान्छन्।
त्यसैले कलअघि प्रमाणीकरण गर्नु उपयोगी हुन्छ। Graph अनुरोध पठाउनुअघि यूआरएल HTTPS छ र verify token दिइएको छ कि छैन भनेर हामी जाँच गर्छौं। यसले गलत destination लाई तुरुन्त असफल देखाउँछ, जडान भएको जस्तो देखिएर बस्न दिँदैन।
प्रमाणीकरणलाई अरू के कुराले रोक्न सक्छ?
कोडसँग सम्बन्ध नभएका तीन कुरा।
एन्डपोइन्टअगाडि प्रमाणीकरण। gateway, basic auth layer वा IP allowlist ले Meta को अनुरोध अस्वीकार गर्नेछन्, र Meta सँग प्रस्तुत गर्ने credentials हुँदैन। प्रमाणीकरण route तिनबिना पहुँचयोग्य हुनुपर्छ।
Redirect। Meta ले तपाईंले दिएको यूआरएलमा कल गर्छ, र canonical host मा जाने 301 ले handshake पूरा हुने गरी काम गर्दैन। अन्तिम यूआरएल दिनुहोस्।
र response लाई serialise गर्ने framework। सबै कुरा JSON मा बेर्ने handler बाट string फर्काउँदा body मा challenge वरिपरि उद्धरणचिह्न आउँछन्, जुन मिल्दैन।
सामान्य गल्तीहरू
- JSON फर्काउनु। body वरिपरि केही पनि नभएको raw challenge value हुनुपर्छ।
- एन्डपोइन्टलाई प्रमाणीकरण पछाडि राख्नु। Meta सँग credentials हुँदैन, त्यसैले अनुरोध अस्वीकार हुन्छ।
- Meta लाई redirect हुने यूआरएल दिनु। अन्तिम यूआरएल प्रयोग गर्नुहोस्।
EasyCoexistence ले Meta लाई कल गर्नुअघि destination HTTPS छ र verify token छ कि छैन जाँच गर्छ, अनि असफल handshake लाई connection timeline मा लेख्छ, destination खारेज गर्दैन।
बारम्बार सोधिने प्रश्नहरू
कुन टोकन प्रयोग गर्नुपर्छ?
तपाईंले रोजेको जुनसुकै string। यूआरएल थाहा पाउने अरू कसैको अनुरोधबाट Meta को अनुरोध छुट्याउन तपाईंको एन्डपोइन्टलाई यसले सहयोग गर्छ।
प्रमाणीकरण कति पटक हुन्छ?
सेटअप गर्दा र destination सेट गर्दा फेरि। काम गरिरहेको एन्डपोइन्ट प्रत्येक event मा पुनः प्रमाणीकरण हुँदैन।
के म आफैं परीक्षण गर्न सक्छु?
सक्नुहुन्छ। तीनवटै parameter सहित आफ्नै एन्डपोइन्टमा कल गरेर body ठ्याक्कै challenge value का रूपमा फर्किएको जाँच गर्नुहोस्।
प्रमाणीकरण हुँदा मेरो सर्भर बन्द थियो भने के हुन्छ?
handshake असफल हुन्छ र destination सक्रिय हुँदैन। फेरि save गर्दा प्रमाणीकरण पुनः चल्छ।
पढ्दै जानुहोस्
सुरु गर्न तयार हुनुहुन्छ?
महिनौं होइन, केही मिनेटमै WhatsApp Coexistence सेट अप गर्नुहोस्। एप फोनमा चलिरहन्छ।
निःशुल्क ट्रायल सुरु गर्नुहोस्प्रमाणीकरण गरिएको