Aplikacja Facebook Connect wewnątrz iframe nie działa w IE7

głosy
5

Jestem budowania aplikacji Facebook Connect, który działa wewnątrz gadżet Google. Jako gadżet oznacza, że ​​aplikacja działa wewnątrz iframe. Wewnątrz aplikacji, nie jest formą, która pozwala zarejestrowanym użytkownikom dodawać komentarze. Składanie odbywa się za pomocą AJAX, ale uzyskać takie same wyniki przy normalnej formie. Problemem jest to, że muszę dostać użytkownika Facebook ID. Firefox, to działa dobrze, ale na Internet Explorer 7, pojawia się następujący błąd:

 'A session key is required for calling this method'

Wierzę, że to ze względu na sposób IE obsługuje pliki cookie innych firm, ponieważ jeśli pójdę do opcji Internet / Prywatność / Zaawansowane i zaznacz Zastąp automatyczną obsługę plików cookie i akceptować wszystkie ciasteczka, to działa dobrze. I nie można przekazać identyfikator Facebook z javascript, ponieważ ktoś mógłby go manipulować.

EDIT: Jeśli mogę otworzyć zawartości iframe bezpośrednio, aplikacja działa poprawnie. Problem jest naprawdę ze względu na IFRAME i model zabezpieczeń IE.

Co ja robię coś źle? Jak mogę rozwiązać ten problem?

Utwórz 16/02/2009 o 19:10
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
1

Znalazłem obejście, które działa, choć jest nieco brzydki: gdy użytkownik kliknie przycisk „login”, otwiera się okienko, które pochodzi z własnej witrynie i która zawiera przycisk logowania Facebook Connect. Gdy użytkownik loguje się, ja zamknąć okienko i odświeżyć iframe.

To jest naprawdę brzydka, ponieważ otwiera dwa wyskakujące okienka, ale przynajmniej działa. Będę wykryć, czy pliki cookie są włączone przy użyciu javascript i jeżeli są one włączone, będę pominąć pierwsze okienko.

Jestem nadal otwarte do lepszych rozwiązań ...


Edit : Facebook używa teraz „fake” okienko w moim popup, zamiast otwierania nowego okna. Teraz mam tylko jedno okienko, które jest dla mnie ok.

Odpowiedział 16/02/2009 o 21:17
źródło użytkownik

głosy
7

Czy próbowałeś dodanie polityki P3P?

Jeśli odpowiedź ustawiania ciasteczko posiada zwartą politykę, IE będzie używana do określenia, czy zezwolić na 3rd party cookies ..

Odpowiedział 17/02/2009 o 04:01
źródło użytkownik

głosy
3

I rozwiązać ten sam problem, modyfikując sposób mogę sprawdzić, czy użytkownik był zalogowany na stronie PHP następstwie FB połączyć logowanie.

Tak, oni się zalogować do FB Połącz z IE7. Następna strona ładuje i późniejsze gdzie muszę zweryfikować rzeczywiście są one rejestrowane na Facebooku Użyłem następujący kod (zauważ, że $ facebook-> require_login () i inne funkcje nie działają - wrócili zerowa tylko w 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();

Parametr $ fb_user_id powinien mieć przy sobie dowód tożsamości użytkownika na Facebooku.

Jeśli chodzi o politykę prywatności i Facebook Connect + IE 7:

Mimo to nie działa dla mnie to wydaje się działać dla innych. w .htaccess:

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

lub w plikach PHP:

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

referencyjny: 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\"");
}
Odpowiedział 30/06/2009 o 19:20
źródło użytkownik

głosy
0

Może chcesz zobaczyć ten wątek Ponadto, który jest tworzony w ramach platformy deweloperskiej facebook

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

Odpowiedział 22/03/2010 o 12:38
źródło użytkownik

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