applicazione Facebook Connect all'interno iframe non funziona in IE7

voti
5

Sto costruendo un'applicazione Facebook Connect che viene eseguito all'interno di un gadget Google. Essere un gadget significa che l'applicazione viene eseguita all'interno di un iframe. All'interno dell'applicazione, c'è una forma che permette agli utenti registrati di inviare commenti. La presentazione è realizzata utilizzando AJAX, ma ottengo gli stessi risultati con una forma normale. Il problema è che ho bisogno di ottenere facebook id dell'utente. In Firefox, funziona benissimo, ma su Internet Explorer 7, ottengo il seguente errore:

 'A session key is required for calling this method'

Credo che questo sia dovuto al modo in cui Internet Explorer gestisce i cookie di terze parti, perché se vado a Opzioni Internet / Privacy / Avanzate e di controllo Sostituisci gestione automatica cookie e accettare tutti i cookie, funziona benissimo. Non posso passare l'ID di Facebook dal javascript, perché chiunque potrebbe manomettere esso.

EDIT: Se apro il contenuto del iframe direttamente, l'applicazione funziona bene. Il problema è in realtà dovuto alla IFRAME e modello di sicurezza di IE.

Che cosa sto facendo qualcosa di sbagliato? Come posso risolvere questo problema?

È pubblicato 16/02/2009 alle 19:10
fonte dall'utente
In altre lingue...                            


4 risposte

voti
1

Ho trovato un work-around che funziona, anche se è un po 'brutto: quando l'utente fa clic sul pulsante 'Login', si apre un popup che viene dal mio sito e che contiene il pulsante di login Facebook Connect. Dopo che l'utente si collega, chiudo il popup e ricaricare l'iframe.

Questo è veramente brutto, perché apre due pop-up, ma almeno funziona. Io rilevare se i cookie sono abilitati utilizzando JavaScript e se sono abilitati, farò saltare la prima comparsa.

Sono ancora aperto a soluzioni migliori ...


Edit : Facebook utilizza ora un pop-up "falso" dentro la mia comparsa, invece di aprire un'altra finestra. Ora ho solo un pop-up che è ok per me.

Risposto il 16/02/2009 a 21:17
fonte dall'utente

voti
7

Avete provato ad aggiungere una politica P3P?

Se l'imposta il cookie di risposta ha una politica compatta, IE utilizzerà questo per determinare se consentire o meno il cookie 3a parte ..

Risposto il 17/02/2009 a 04:01
fonte dall'utente

voti
3

Ho risolto lo stesso problema modificando come posso controllare se l'utente connesso sulla pagina PHP segue un FB collegare login.

Così, essi login per FB Connect con IE7. Avanti e successive caricamento della pagina in cui ho bisogno per verificare che siano effettivamente connesso a Facebook ho usato il seguente codice (si noti che $ facebook-> require_login () e altre funzioni non ha funzionato - sono tornati nullo solo in IE 7):

// Validate from Facebook that session is valid and user is logged in. require_once 'facebook/facebook.php'; $facebook = new Facebook(YourAppsAPIKeyPublic, YourAppsAPIKeySecret); $facebook->api_client->session_key = $this->userAPISessionKey; $fb_user_id = $facebook->api_client->users_getLoggedInUser();

Il $ fb_user_id dovrebbe ora avere una valida FaceBook ID utente.

Per quanto riguarda la politica sulla privacy e Facebook Connect + IE 7:

Anche se questo non ha funzionato per me sembra funzionare per gli altri. in HTAccess:

Header append P3P "CP=\"HONK\""

o in file PHP:

header('P3P: CP="CAO PSA OUR"'); o header('P3P: CP="HONK"');

riferimento: http://forum.developers.facebook.com/viewtopic.php?id=28636

ASP.NET:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");
}
Risposto il 30/06/2009 a 19:20
fonte dall'utente

voti
0

si consiglia di vedere questa discussione anche, che è stato creato sotto la piattaforma di sviluppo facebook

http://forum.developers.facebook.com/viewtopic.php?id=452

Risposto il 22/03/2010 a 12:38
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more