c'è un modo per ottenere e analizzare la richiesta firmata in Node.js nella scheda della pagina Facebook? Devo conoscere l'id della pagina e se l'utente ha apprezzato la pagina ...Ottieni info_critte in Node.js (Express) App Facebook Canvas
6
A
risposta
10
L'ho fatto un po 'di tempo fa e ho finito per scrivere una piccola libreria per farlo. Il CoffeeScript originale può essere trovato alla https://gist.github.com/fbef51815ab6f062b51a#file_signed_request.coffee, qui è una traduzione JavaScript:
var crypto = require('crypto');
SignedRequest = (function() {
function SignedRequest(secret, request) {
this.secret = secret;
this.request = request;
this.verify = this.verify.bind(this);
var parts = this.request.split('.');
this.encodedSignature = parts[0];
this.encoded = parts[1];
this.signature = this.base64decode(this.encodedSignature);
this.decoded = this.base64decode(this.encoded);
this.data = JSON.parse(this.decoded);
}
SignedRequest.prototype.verify = function() {
if (this.data.algorithm !== 'HMAC-SHA256') {
return false;
}
var hmac = crypto.createHmac('SHA256', this.secret);
hmac.update(this.encoded);
var result = hmac.digest('base64').replace(/\//g, '_').replace(/\+/g, '-').replace(/\=/g, '');
return result === this.encodedSignature;
};
SignedRequest.prototype.base64encode = function(data) {
return new Buffer(data, 'utf8').toString('base64').replace(/\//g, '_').replace(/\+/g, '-').replace(/\=/g, '');
};
SignedRequest.prototype.base64decode = function(data) {
while (data.length % 4 !== 0) {
data += '=';
}
data = data.replace(/-/g, '+').replace(/_/g, '/');
return new Buffer(data, 'base64').toString('utf-8');
};
return SignedRequest;
})();
module.exports = SignedRequest;
che è possibile utilizzare in questo modo:
var verifier = new SignedRequest(clientSecret, signedRequest);
verifier.verify() // whether or not the signed request verifies
verifier.data // the data from the signed request
Problemi correlati
- 1. Ottieni contenuto URL in Node.js con Express
- 2. node.js express app.get e app.post
- 3. Facebook Canvas APP (Iframed) Ridimensionamento automatico altezza
- 4. Ottieni il nome host della richiesta corrente in node.js Express
- 5. Node.js + App basata su Express non in esecuzione con iisnode
- 6. internazionalizzazione in Node.js, Express, i18n
- 7. Forever Node.JS Express 4
- 8. Facebook iFrame canvas app Numero di sessioni PHP
- 9. Localizzazione in node.js con express
- 10. Informazioni su vhost in Express Node.js
- 11. Node.js Express: richiede/usa una app all'interno di un'altra
- 12. node.js express ajax sessions
- 13. Ottieni l'ID istanza corrente di app-engine in node.js
- 14. node.js express socket.io port 3000 in uso
- 15. Node.js: express non funziona?
- 16. Node.js/Cache Express
- 17. Scadenza cookie node.js Express Passport
- 18. Node.js, Express e Jade - Moduli
- 19. Ottieni l'ISP di un IP in node.js
- 20. Errore URL Canvas Canvas/URL canvas sicuro
- 21. Facebook Web App errore sviluppo
- 22. Node.js + Express + Handlebars.js + viste parziali
- 23. Wildcard nel router Express/node.js
- 24. Node.js + Express: route vs controller
- 25. Ospita più siti Web utilizzando Node.js Express
- 26. Node.js ed Express su Windows
- 27. come usare Promise con express in node.js?
- 28. gestione eccezioni in node.js ed express
- 29. Streaming/Piping Output JSON.stringify in Node.js/Express
- 30. Eventi personalizzati in Node.js con Express framework
sembra buono. Molte grazie! – Droidik
Con cosa si sostituisce la richiesta firmata? So che il clientSecret è fornito da facebook? Pan in ogni caso puoi mostrare come hai fatto tutto il lavoro per il lato server facebook api per afferrare l'ID utente? – Lion789
@Michelle come recuperare la richiesta_segnale codificata iniziale. Per esempio 'app.post ('/ *', la funzione (req, res) { console.log ('req.signed_request'); var verificatore = new SignedRequest (app_secret_key, req.signed_request); verificatore. verify(); console.log ('verifier.data'); res.redirect ('/'); }); ' – user1371896