Всплывающее окно Fb.ui() работает, но диалог загружается навсегда

Я хочу попросить пользователя предоставить разрешение «publish_stream» моему приложению с помощью facebook javascript sdk.

Я инициализирую это так:

FB.init({
    appId  : '203702512703',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true, // parse XFBML
    channelURL : 'http://mydomain.com/channel.php', // channel.html file
    oauth  : true // enable OAuth 2.0
});

И мой вызов FB.ui выглядит так:

FB.ui({
    client_id: '203702512703',
    method: 'oauth',
    scope: 'publish_stream',
    redirect_uri: 'http://mydomain.com/',
    response_type: 'token',
    display: 'dialog'
  });

Если я изменю «диалог» на «всплывающее окно», он отлично работает. Но если я укажу «диалог» или оставлю этот параметр отключенным, он покажет мне fb-div, но с анимацией загрузки (например: http://p.iqs.me/t1c4j ), и контент никогда не загружается.

Что я делаю неправильно?

ОБНОВЛЕНИЕ: я нашел эту страницу http://developers.facebook.com/docs/reference/dialogs/#display, в котором говорится следующее об использовании «iframe» в качестве отображения: «Из-за риска кликджекинга это разрешено только для некоторых определенных диалогов и требует, чтобы вы передали действительный access_token»

Ничего подобного не говорится о мысли «диалог», но и iframe, и диалог дают один и тот же плохой результат.

Как мне передать access_token?


person Martin    schedule 29.09.2011    source источник
comment
Ваша проблема похожа на эту ошибка?   -  person ifaour    schedule 29.09.2011
comment
Немного похоже. Но если это ошибка, я думаю, от нее пострадают тысячи приложений. Тут скорее я что-то не так делаю.   -  person Martin    schedule 29.09.2011


Ответы (2)


«Всплывающее окно» является обязательным для метода: «oauth» или FB.login для javascript SDK из-за безопасности (кликджекинг и фишинг). Я бы предложил использовать FB.login в любом случае для получения разрешений или аутентификации, потому что это более удобно.

надеюсь это поможет

person Anatoly Lubarsky    schedule 29.09.2011
comment
Хорошо. Спасибо :) Это не очень хорошо задокументировано. - person Martin; 29.09.2011

Также существует несоответствие в том, как вы можете использовать display: iframe для FB.login в зависимости от того, находитесь ли вы на вкладке или на холсте. На вкладке вам не нужен access_token, а на холсте он вам нужен.

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

person slashwhatever    schedule 03.10.2011