ciao,
infomidia ha scritto:
l'id utente viene caricato in un hiddenfield e funziona tutto bene.
Fai attenzione perché in quel modo l'utente può variare il suo Facebook id a piacimento. Usando uno strumento tipo Firebug è possibile alterare il contenuto dell'hiddenfield prima che sia reinviato al server con la pressione del Button.
infomidia ha scritto:
Come faccio a caricare l'id (hiddenfield value) senza aspettare il caricamento di tutta la pagina?
E' possibile ma non nel modo che viene descritto in quell'articolo.
Vedi, la javascript SDK di Facebook gira nel browser client, quindi può funzionare solo dopo che la pagina ASP.NET ha ormai terminato la sua esecuzione ed è stata trasmessa.
Ne consegue che, finché l'utente non si logga a Facebook dalla tua applicazione usando l'apposito bottone (o con
FB.login), non c'è proprio modo di leggere il suo facebook id dal Page_Load.
L'utenticazione non può neanche essere effettuata lato server, dato che OAuth, il meccanismo di autenticazione di Facebook, prevede che l'utente inserisca le sue credenziali in una pagina su facebook.com, che in questo genere di integrazioni di solito appare in
popup.
Quando finalmente l'utente ha effettuato il login, allora la javascript SDK scriverà un
cookie denominato fbsr_
tuoApplicationID. Il suo contenuto è la
signed request, cioè un blocco di testo che va parsato e verificato usando la tua
chiave segreta dell'applicazione, che puoi ottenere dalla
sezione apps di Facebook Developers.
Trattandosi di un cookie, il browser te lo invierà ad ogni successiva richiesta dell'utente e quindi potrai leggerlo nel Page_Load della tua pagina.
All'interno ci troverei il facebook Id e un codice hash che userai per confermare che i dati non siano stati alterati dall'utente, ma siano quelli originali generati da Facebook. E' importantissimo fare questa verifica, ad esempio se usi il facebook Id come identificativo per far votare gli utenti in un concorso a premi.
Se vuoi mantenere lo spirito del "without external libraries", come nell'articolo che hai postato, allora qui puoi vedere come estrarre informazioni dalla signed request.
http://blog.johnavis.com/blog/default.asp?id=605Tuttavia, se stai sviluppando un nuovo progetto, dovresti dare un'occhiata al nuovo
template Facebook application di MVC4, rilasciato con il recente update ASP.NET and Web Tools 2012.2.
Se questo non è possibile, puoi comunque scaricare da Nuget la
Facebook SDK per .NET che ti semplifica le operazioni di cui abbiamo parlato.
ciao
Modificato da BrightSoul il 29 giugno 2013 10.10 -