Диалог FB.ui (iframe) невидим

я пытаюсь добавить функциональность stream.publish в свое веб-приложение, но у меня проблема с диалоговым окном «канал».

Мой код следующий:

        var obj = {
            method: 'feed',
            display: 'iframe',
            name: data.name,
            link: data.link,
            picture: data.picture,
            caption: data.name,
            description: data.description,
            message: data.message,
            actions: [{
                name: data.actions.name,
                link: data.actions.link
            }],
            user_message_prompt: ''
        }

        var resp = FB.ui(obj, function(response) {
            alert("DONE");
        });

Я могу заставить его работать, если я использую «всплывающее окно» вместо «iframe», но это не то, что я хочу.

Любые идеи, почему канал просто не появляется на моем экране???

Спасибо!


person Alberto Sheinfeld    schedule 18.01.2012    source источник
comment
Где вы используете этот код? Приложение Canvas, сайт, вкладка страницы?   -  person Juicy Scripter    schedule 18.01.2012


Ответы (1)


Как описано в документации по диалоговым окнам.

Если вы укажете iframe, у вас должен быть действительный access_token. Чтобы получить действительный access_token, см. руководство по аутентификации.

Обновление:
Кажется, есть пара других утверждений, которые могут привести к такому поведению:

iframe: Отображение диалогового окна в лайтбоксе iframe на текущей странице. Из-за риска кликджекинга это разрешено только для некоторых определенных диалогов и требует, чтобы вы передали действительный access_token.

И этот.

На страницах холста Facebook диалоги поддерживаются только для приложений iframe.

Существует также открытая ОШИБКА №246637628719849 о том, что "Диалоговое окно отправки" не работает с as iframe на вкладках страниц ( которые могут быть связаны, а могут и не быть связаны).

Update2:
Фактически во всех моих приложениях у меня есть пользователь FB.ui без указания display, так как на момент внедрения Dialogs iframe в большинстве случаев плохо работал, а без него Facebook JS-SDK пытаюсь использовать наиболее подходящий режим отображения...

Update3:
OP имел fb-root в другом элементе DOM, который был скрыт, из-за чего диалоговое окно было невидимым (как он указал в комментарии)

person Juicy Scripter    schedule 18.01.2012
comment
У меня есть действительный access_token, если я также добавлю его в объект obj, ничего не произойдет. Любые другие идеи? - person Alberto Sheinfeld; 18.01.2012
comment
На самом деле у меня был div fb-root внутри другого div с добавленным display:none, поэтому iframe был скрыт за ним: $ - person Alberto Sheinfeld; 18.01.2012
comment
@AlbertoSheinfeld, я обновил свой ответ информацией из вашего комментария. Не принимайте это, мы просто оставляем это как напоминание... - person Juicy Scripter; 18.01.2012
comment
Привет. Как вы думаете, вы можете прокомментировать stackoverflow.com/questions/22584358/? Как мне установить родителя - это всегда fb-root? Нужно ли мне получать токен доступа? И если я это сделаю, больше проблем: stackoverflow.com/questions/22594189/ - person Agamemnus; 23.03.2014