Così sto cercando di utilizzare l'API Grafico con la Facebook JS SDK e sto ottenendo il seguente errore in Safari:Utilizzando API di Facebook Grafico con il JS SDK in una pagina di tela iFrame in Safari è rotto
"OAuthException: è necessario utilizzare un token di accesso attivo per richiedere informazioni sull'utente corrente."
Avevo il sospetto che fosse dovuto al fatto che Safari è molto rigido con l'impostazione dei cookie x-domain e così l'ho provato in Firefox con l'opzione cookie
impostata su false in FB.init()
. Ho infatti trovato che stavo ottenendo lo stesso errore per le mie richieste FB.api()
.
FB.init({
appId: "<%= app_id %>",
status: true, // check login status
// We cannot rely on this cookie being set in an iframe. I found this
// out because the Graph API was not working in Safari.
// cookie: true, // enable cookies to allow the server to access the session
xfbml: true, // parse XFBML
channelUrl: window.location.protocol + '//' + window.location.host + '/fb/canvas/channel.html'
});
Quindi mi chiedo ... c'è un buon modo per impostare manualmente i parametri di query access_token
nella richiesta FB.api()
?
Se il cookie FB.init()
viene impostato correttamente, questo è ciò che i FB.api()
parametri della richiesta assomigliano:
access_token xxxxxxxxxxxx|1.xxxxxxxxxxxxxxxxxxxxxx__.3600.xxxxxxxxxx-xxx|xxxxxxxxxxxxxxxxxxxxxxxxxxx
callback FB.ApiServer._callbacks.xxxxxxxxxxxxxxx
pretty 0
sdk joey
In Safari (o quando l'opzione cookie
FB.init()
non è impostata) il FB.api()
richiesta di parametri assomigliano:
callback FB.ApiServer._callbacks.xxxxxxxxxxxxxxx
pretty 0
sdk joey
Ora ... ovviamente la mia app ha la capacità di generare il access_token
sul lato server ... Mi chiedo se c'è un modo in cui posso impostare manualmente FB.api()
per utilizzare il mio server-side generato access_token
.
Sto pensando che c'è un altro modo per farlo. Fondamentalmente, dato che abbiamo una volta la possibilità di impostare i cookie sulla richiesta iniziale che popola l'iFrame, possiamo usare l'opportunità di imitare il cookie 'fbs_xxxxxxxxx' che l'SDK FB JS tenta di impostare durante' FB.init() '. Ora ... il valore del cookie impostato da SDK è il seguente: 'fbs_xxxxxxxxx =" access_token = xxx & expires = xxx & secret = xxx & session_key = xxx & sig = xxx & uid = xxx "'. Le parti 'access_token' e' expires' sono facili.Ma sto avendo un piccolo problema a capire le altre parti. –