Elucubrato da saibal
Addì 11 Gennaio 2011
Integrare Facebook con le API: cancellazione applicazione
Link utili:
- Integrare Facebook con le API: Facepile
- Aggiungere i metatag Open Graph di Facebook a Wordpress
- Il bottone "Invia": la nuova e mirabolante funzionalità di Facebook
link interno
link esterno
Quando un utente cancella la nostra applicazione da Facebook è possibile averne notifica così da poter avviare una serie di operazioni gestite da una pagina sul proprio sito (ad esempio inviare una email di notifica e così via).
La prima cosa da fare è entrare nelle impostazioni dell’applicazione e inserire una url di callback come da figura:
È fondamentale settare su “abilitato” il campo “Oauth 2.0 for Canvas” altrimenti la procedura non andrà a buon fine.
A questo punto, nel momento in cui l’utente cancella l’applicazione, Facebook richiama la pagina del nostro sito indicata precedentemente, inviando una POST REQUEST con un singolo parametro (signed_request) simile a:
1 | vlXgu64BQGFSQrY0ZcJBZASMvYvTHu9GQ0YM9rjPSso.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsIjAiOiJwYXlsb2FkIn0 |
Il parametro è codificato secondo un algoritmo specifico di Facebook e viene inviato via POST anziché via GET per questioni di sicurezza.
Dal parametro signed_request è possibile estrarre l’id utente che ha cancellato l’applicazione. Per fare questo bastano due funzioni fornite da Facebook:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php // chiave segreta dell'applicazione $conf['secret_key'] = "a314dc24dc4a45775e4efef5fa547151"; //chiamo la funzione $fb_data = parse_signed_request($_REQUEST['signed_request'], $conf['secret_key']); // idutente $fb_userid = $fb_data['user_id']; function parse_signed_request($signed_request, $secret) { list($encoded_sig, $payload) = explode('.', $signed_request, 2); // decode dei dati $sig = base64_url_decode($encoded_sig); $fb_data = json_decode(base64_url_decode($payload), true); if (strtoupper($fb_data['algorithm']) !== 'HMAC-SHA256') { error_log('Unknown algorithm. Expected HMAC-SHA256'); return null; } // check della firma $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); if ($sig !== $expected_sig) { error_log('Bad Signed JSON signature!'); return null; } return $fb_data; } function base64_url_decode($input) { return base64_decode(strtr($input, '-_', '+/')); } |
A questo punto otteniamo la variablie $fb_userid da utilizzare per le nostre operazioni.


Vota: %SAIBAL_PERCENTAGE%%
Lascia un Commento