2016-04-13 29 views
19

Infine Facebook ha lanciato l'API per il proprio messenger API for their messenger. Questo ci permetterà di creare bot di chat.Piattaforma Facebook Messenger. Impostazione del webhook con SSL

In getting started guide, Ho bisogno di impostare webhook. Ciò richiede il server web che risiede in un dominio specifico e deve utilizzare la connessione SSL.

Ho VPS con IP statico. Ho creato un certificato autofirmato e creato un semplice server Web Node JS che utilizza questo certificato. Prima di tutto ho bisogno di verificare gettone per webhook:

app.get('/webhook/', function (req, res) { 
    if (req.query['hub.verify_token'] === '<validation_token>') { 
     res.send(req.query['hub.challenge']); 
    } 
    res.send('Error, wrong validation token'); 
}) 

Poi ho lanciato questa applicazione server e nel mio facebook app cruscotto clicco per Verifica e salvare pulsante.

Mi lancia questo messaggio di errore:

Screenshot

Questo significa che Facebook non vuole accettare la mia auto certificato firmato.

Questo porta a diverse domande:

Ho bisogno di usare i certificati SSL solo forniti da autorità di certificazione al fine di lavorare con Facebook Messenger?

Lavorare con Facebook Messenger è molto più difficile di Telegram.

+1

Mi chiedo come si sta sviluppando localmente in assenza di https? – Volatil3

+0

Codice locale, quindi caricarlo sul mio VPS tramite git e avviarlo. –

+0

grazie per la tua risposta, facendo riferimento al codice di esempio, sto ricevendo errore: 'Errore Parse: errore di sintassi, imprevisto ',', attesa variabile (T_VARIABLE)'. Come eseguire quel codice e verificare il mio weebhook? – Volatil3

risposta

6

È possibile utilizzare cloudflare per ottenere https anziché self-sign. Oppure puoi usare https://letsencrypt.org

+0

Ciao, ho lo stesso problema anche se i miei certificati provengono da COMODO per il dominio e funzionano bene con l'apache ma non riesco a farli funzionare con il pallone e questa verifica dell'URL. Ecco il mio problema: http: // stackoverflow.com/questions/36642005/fail-to-validate-url-in-facebook-webhook-subscription-with-python-flask-on-the-b – GeekSince1982

+1

letsencrypt non funziona per i domini degli indirizzi IP, che puzza per localhost sviluppo. – Rob

8

Per il solo test puoi usare localtunnel. https://localtunnel.me/

+0

Bello, questo risolve sia il problema SSL che il problema con l'inoltro della richiesta al mio computer locale. – woezelmann

+1

Durante il debug con frequenti riavvii al nodo, dobbiamo ricreare i tunnel e aggiornare le configurazioni di Webhook. Questo è un po 'deludente. Qualcuno può postare il processo corretto per Letsencrypt? – Ved

+0

@woezelmann Funziona bene? Voglio anche una connessione locale sicura per WebHooks – Volatil3

3

estratto da here:

New webhook subscriptions must use a secure HTTPS callback URL as of v2.5. With the next version of the Graph API we will stop sending updates to non-HTTPS callback URLs.
If you need more information about setting up HTTPS for your callback URL, check out the Getting Started guide from Let's Encrypt and the SSL Certificate Installation instructions from Digicert.

E da here, e come @saturngod detto:

Self signed certificates won't be accepted by facebook. Letsencrypt certificates works perfectly.

0

Per verificare l'uso gancio web: -

$_REQUEST["hub_token"] and $_REQUEST["hub_challenge"]; 

Prima verifica di token al token della tua pagina e poi stampa: -

echo $_REQUEST["hub_challenge"]; 
exit; 
5

Ho distribuito my bot a Heroku e offrono prontamente connessioni HTTPS. Per lo sviluppo locale, utilizzo ngrok, che supporta anche l'inoltro HTTPS.

Ngrok

per i nuovi arrivati, ho scritto this small tutorial per coloro che vogliono iniziare con l'API di Facebook Messenger (Bot), dalla prima riga di codice alla distribuzione Heroku. Ho scoperto che Heroku era perfetto per un progetto del genere, dal momento che utilizzavo Python flask + gunicorn, tutto quello di cui avevo bisogno per l'implementazione richiedeva veramente 5 minuti per l'installazione, e Heroku si occupava di tutto il resto.

+0

Questa risposta mi ha aiutato. E anche il tuo blog link. Grazie @ hung-tran –

+0

@Hung Tran Ho già usato 'ngrok', ma ho seguito l'errore SSL. 'Fatal error: Curl non riuscito con errore # 60: SSL problema del certificato: in grado di ottenere il certificato emittente locale C: \ xampp \ htdocs \ webhook.php on line
' Può cortesemente dirmi Come posso risolverlo. – Cloud