приложение facebook Connect внутри IFRAME не работает в IE7

голоса
5

Я строю приложение Facebook Connect, который работает внутри гаджета Google. Будучи гаджет означает, что приложение работает внутри фрейма. Внутри приложения, есть форма, которая позволяет зарегистрированным пользователям отправлять комментарии. Подача производится с помощью AJAX, но я получаю те же результаты с нормальной формой. Проблема заключается в том, что мне нужно, чтобы получить пользователь facebook идентификатор. В Firefox, она отлично работает, но на Internet Explorer 7, я получаю следующее сообщение об ошибке:

 'A session key is required for calling this method'

Я считаю, что это связано с тем, как IE обрабатывает сторонние куки, потому что если я иду к вариантам Интернет / Конфиденциальность / Дополнительно и проверить Перекрыть автоматическую обработку печенья и принять все куки, то он работает отлично. Я не могу передать идентификатор Facebook из JavaScript, потому что кто-то может подделывать его.

EDIT: Если я открываю содержание IFRAME напрямую, приложение работает отлично. Проблема действительно в связи с IFRAME и модели безопасности IE.

Что я делаю что-то не так? Как я могу решить эту проблему?

Задан 16/02/2009 в 19:10
источник пользователем
На других языках...                            


4 ответов

голоса
1

Я нашел обходный, что работает, хотя это немного некрасиво: когда пользователь нажимает на кнопку «Войти», она открывает всплывающее окно, которое исходит от моего собственного сайта и который содержит кнопку для входа в Facebook Connect. После того, как пользователь входит в систему, я закрываю всплывающего окна и перезагрузите IFRAME.

Это действительно некрасиво, потому что он открывает два всплывающие окна, но, по крайней мере, это работает. Я определю, является ли включаемый JavaScript печенье и, если они включены, я пропущу первое всплывающее окно.

Я по-прежнему открыт для лучших решений ...


Edit : Facebook теперь использует «фальшивые» всплывающие окна в моем всплывающем окне, вместо открытия другого окна. Теперь у меня есть только одно всплывающее окно , которое хорошо для меня.

Ответил 16/02/2009 в 21:17
источник пользователем

голоса
7

Вы пытались добавить политики P3P?

Если установка куки ответ имеет компактный политики, IE будет использовать это, чтобы определить, является ли или не позволить 3 участника куки ..

Ответил 17/02/2009 в 04:01
источник пользователем

голоса
3

Я решил такую ​​же проблему, изменяя, как я могу проверить, если пользователь вошел в систему на странице PHP, следующие за FB подключения входа.

Таким образом, они войти в FB Connect с IE7. Далее и последующие загрузки страницы, где мне нужно, чтобы убедиться, что они действительно вошли в FaceBook я использовал следующий код (обратите внимание, что $ facebook-> require_login () и другие функции не работают - они вернулись нуль только в 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();

Теперь $ fb_user_id должен иметь действительный FaceBook идентификатор пользователя.

Что касается политики конфиденциальности и facebook подключения + IE 7:

Хотя это не работает для меня это, кажется, работает для других. в HTAccess:

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

или в PHP файлы:

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

ссылка: 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\"");
}
Ответил 30/06/2009 в 19:20
источник пользователем

голоса
0

Вы можете видеть эту тему также, который создается под facebook платформы для разработчиков

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

Ответил 22/03/2010 в 12:38
источник пользователем

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