Получение данных из приложения Facebook, встроенного в iframe

Используя iFrame, кто-то на моем веб-сайте может получить доступ к своей учетной записи Facebook, отобразить список своих фотоальбомов, а затем отобразить фотографии из выбранных альбомов.

В тот момент, когда пользователь щелкает фотографию, я показываю диалоговое окно, показывающее путь к фотографии.

Все вышеперечисленное работает отлично.

Мой следующий шаг — передать информацию о пути фотографии обратно на мою веб-страницу, но я не уверен, как это сделать, потому что объект, которому я хочу передать данные, находится за пределами iFrame и, следовательно, неизвестен Facebook. Я попытался перейти сверху вниз, сославшись на него через DOM, который содержит iFrame на моем веб-сайте...

parent.client.document.getElementById("FBPhoto").setValue(photoReference);

...но это не сработало.

Передача аргумента PHP-скрипту на моем сайте не будет работать, потому что я не хочу обновлять страницу на своем сайте (поскольку это приведет к потере данных пользователем).


person Alan M.    schedule 30.10.2009    source источник
comment
Вам необходимо предоставить больше исходного кода, чтобы помочь нам понять вашу проблему.   -  person Phillip B Oldham    schedule 31.10.2009


Ответы (2)


Из того, что вы предоставили, похоже, что ваш JS может быть неправильным.

Выполнение чего-то подобного может дать вам необходимое значение:

var photoReference = window.frames["iframe-name"].document.getElementById("FBPhoto");

Затем вам нужно присвоить его чему-то:

MyObject.setValue(photoReference);

Примечание. window.frames["iframe-name"].document.getElementById("FBPhoto") вернет элемент DOM с именем #FBPhoto и, следовательно, будет большим фрагментом HTML. Ваш метод setValue() может этого не ожидать.

Я предлагаю вам попробовать запустить скрипт в Firefox с Firebug установлен, что позволит вам вывести значение photoReference в консоль, чтобы посмотреть, что вы получите в ответ.

person Phillip B Oldham    schedule 31.10.2009
comment
Большое спасибо, Филипп. Я попробую. - person Alan M.; 31.10.2009

Дой... Я понял, что, поскольку соединение с Facebook работает в выделенном iFrame, не будет проблемой перенаправить этот фрейм, потому что в любом случае нет причин оставлять его открытым.

Кому интересно, вот что я сделал...

  1. PHP (внутри index.php) отображает фотографии альбома.

  2. PHP также окружает каждый кадр img тегами href.

  3. Ссылка указывает на файл PHP (на моем веб-сайте) и включает аргумент с расположением большой версии фотографии (поскольку мое приложение отображает миниатюры). Что-то вроде: "‹ a href="pathToMySite/get-photo.php?photopath=путь к facebook">

  4. Когда пользователь нажимает на нужную фотографию, соответствующая ссылка вызывает get-photo.php (на моем сайте) и передает путь к фотографии.

  5. Затем get-photo.php вставляет ссылку на основной JS-файл моего веб-сайта в заголовок документа и вставляет скрипт в тело HTML-документа.

  6. Сценарий вызывает функцию извлечения фотографий JS и передает аргумент пути, полученный от встроенного iFrame, на котором запущено приложение Facebook.

  7. Функция JS закрывает iFrame (поскольку на тот момент я закончил работу с Facebook) и берет фотографию из Facebook.

person Alan M.    schedule 31.10.2009