Facebook iframe stream.Publish не может закрыть диалог или пропустить - PullRequest
0 голосов
/ 21 февраля 2010

тяну меня за волосы :( потратил 10 часов, но ничего не вышло

Я читал эту ветку http://forum.developers.facebook.com/viewtopic.php?pid=198128

, но это не сильно помогло.

Я использую локальный сервер разработчика приложений (localhost: 8080)
iframe app

, поэтому у меня возникло несколько проблем.
1) в safari 4.0.4, диалоговое окно публикации историихорошо подходит со всеми изображениями / данными / action_links.после публикации истории (или пропуска) диалоговое окно становится пустым и не закрывается.

2) Я протестировал тот же код на Firefox 3.5.8, в диалоговом окне отображаются все изображения / данные / action_links,но тогда все это замерзает.

Щелчок в любом месте диалогового окна вообще не помогает.Если я достаточно терпелив и нажимаю «опубликовать», мне придется подождать около 10 секунд, прежде чем диалоговое окно сообщит «история опубликована».затем он замерзает.(нажатие на пропуск не имеет значения).

кстати, «эффекта нажатия кнопки» нет: то есть: кнопки не выглядят так, как будто они «опускаются» при нажатии.

Я проверил память Firefox с помощью команды «top»"на терминале все вроде бы нормально, никаких скачков в процессорных процессорах (я мог бы открыть другие вкладки firefox и поработать над ними)

Мои тщетные попытки решения проблем ...

1) так я подумал, хм это может быть из-за локальной проблемы dev (localhost)?Я загрузил код на рабочий сервер, происходит то же самое.

2) Я попробовал старый Firefox (3.1), и та же проблема сохранилась (зависание)

3) Я заметил, чтоЯ вроде использовал 2 разные функции FB (Connect и XFBML).Функция подключения, которую я использовал в функции PostStory.Функция XFBML, которую я использовал перед тегом.

Поэтому я подумал, хм ... Я попытался заменить функцию FB_RequireFeatures ["Connect"] на FB_RequireFeatures ["XFBML"].Ничего не изменилось.Я все еще не могу закрыть диалоговое окно истории.

4) Есть ли вероятность того, что я не подключился к xd_receiver.htm должным образом?

мой xd_receiver.htm хранится в моей папке / media / fbconnect

в моем app.yaml

handler:
- url: /fbconnect
  static_dir: media/fbconnect

, поэтому я подумал, что необходимо установить соединение с xd_receiver.htm.В любом случае я могу это проверить?

вот все коды:

<script type="text/javascript">

        //post story function
        function PostStory() {
            //init facebook
            FB_RequireFeatures(["Connect"], function() {
            FB.Facebook.init('my_app_key', "/fbconnect/xd_receiver.htm");

            FB.ensureInit(function() {

                var message = 'the message';
                var attachment = {
                    'name': 'a simple app to send gifts',
                    'href': 'http://apps.facebook.com/my_app_name', 'caption': '{*actor*} sent u something',
                    'description': 'some description',
                    "media": [{ "type": "image", "src": "http://bit.ly/105QYr", "href": "http://bit.ly/105QYr"}]
                };
                //action links can only be seen AFTER the feed is published
                var action_links = [{ 'text': 'Send him/her a gift back!', 'href': 'http://somelink.com'}];
                FB.Connect.streamPublish(message, attachment, action_links, null, "Share the gift with your friends", callback, false, null);
            });
        });

        function callback(post_id, exception) {
            //alert('Wall Post Complete');
        }

}

</script>

непосредственно перед концом тега / body, у меня есть это:

<script type="text/javascript">

function callFBInit () {FB_RequireFeatures (["XFBML"], function () {FB.Facebook.init ("my_app_key", "/fbconnect/xd_receiver.htm");});} callFBInit ();

Кстати, мой xd_receiver.htm содержит:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  <html xmlns=� http://www.w3.org/1999/xhtml�  >
    <head>
      <title>cross-domain receiver page</title>
     </head>
    <body>
      <script src=�http://static.ak.facebook.com/js/api_lib/v0.4/xdcommreceiver.debug.js�  type=� text/javascript� ></script>
    </body>
  </html>

надеюсь, что вы, ребята, можете помочь.ТНХ

Ответы [ 3 ]

2 голосов
/ 09 марта 2010

привет, подумал, что могу ответить на свой вопрос

Я решил свою проблему

причина, по которой диалоговое окно streamPublish выглядело "зависшим", казалась z-index (проблема CSS!)

Ранее в моем приложении было фоновое изображение с z-индексом -10 (моя логика в том, что оно должно быть как можно дальше назад).

Я изменил его на -1, и вуаля, диалог Facebook работает на Safari и Firefox (все новые версии)

Хотя я не тестировал его с IE, но, поскольку IE больше не является огромным рынком, я подумал, что не стоит тратить много времени на обдумывание [http://www.w3schools.com/browsers/browsers_stats.asp][1]

как я пришел к выводу, что мне нужно настроить z-index? Я проследил все свои шаги и превратил его в очень простое приложение iframe, содержащее только HTML-файлы. Потребовалось время, но это помогло!

0 голосов
/ 08 марта 2010

Хорошо, мне удалось заставить его работать, просто пропустив параметр пути канала в вызове FB.Facebook.init () (тот, что с xd_receiver.htm). Извините, фуе, я видел где-то еще, что вы уже знаете это, но я должен прокомментировать здесь, чтобы другие люди заходили на эту страницу.

Хорошо работает в трех средах, о которых я говорил ранее. Теперь большой вопрос: почему, черт возьми, это не работает с каналом? Должен признать, что я не понял, для чего именно используется файл xd_receiver.htm, но, похоже, в некоторых случаях он вам не нужен ... просто прокомментировал его в моем коде на случай, если у меня возникнут проблемы позже ... Нет сомнений, что проблема с закрытием окна связана с этим чертовым файлом. Эта проблема сводит меня с ума, мне не нравятся странные вещи, подобные тем, которые на самом деле не решены.

0 голосов
/ 08 марта 2010

У меня точно такая же проблема. Технически, streamPublish работает, но окно фейсбука просто sux. Я использую 3 среды для тестирования, но с другим поведением:

  1. Debian Linux с IceWeasel (в основном Firefox). Это моя среда разработки (с Haxe для флеш-части). Как только мое facebook-flash-приложение всплывает в окне facebook (с Java-Script FB.Connect.streamPublish), если я нажимаю «опубликовать» или «пропустить» (чтобы отменить), окно facebook становится полностью белым, оставляя меня с белый прямоугольник перед областью вспышки. Также обратите внимание, что в окне Facebook нет строки заголовка. Приложение Flash все еще работает в фоновом режиме, но с белым прямоугольником я не могу нигде щелкнуть. Перезагрузка ...

  2. Windows XP с IE 8.0. Почти такое же поведение. Разница лишь в том, что если я щелкну рядом с областью вспышки, она получит фокус, и окно FB исчезнет, ​​но я знаю, что оно все еще открыто внутри, поскольку я не могу его снова открыть.

  3. Windows XP с Firefox. Теперь все по-другому (обратите внимание, что я не перепутал названия ОС и браузеров). Фактически, это почти работает: строка заголовка находится там с буквой «х» вверху справа, чтобы закрыть ее, и это нормально. Но если я нажму «опубликовать» или «пропустить», окно не закроется. Тем не менее, он становится полностью белым, за исключением строки заголовка, так что я могу потом закрыть окно facebook и заставить его появляться снова без перезапуска.

Не думаю, что эта информация поможет, но, эй, лучше, чем ничего. Уже несколько месяцев это действует мне на нервы, и теперь мой начальник тоже расстроен. Facebook дерьмо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...