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

#facebook #facebook-javascript-sdk #facebook-ui

#Facebook #facebook-javascript-sdk #facebook-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'
  });
  

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

Что я делаю не так?

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

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

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

Комментарии:

1. У вас проблема, похожая на эту ошибку ?

2. Кажется, немного похоже. Но если это ошибка, я думаю, от нее пострадают тысячи приложений. Более вероятно, что я делаю здесь что-то не так.

Ответ №1:

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

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

Комментарии:

1. Хорошо. Спасибо 🙂 Это не очень хорошо документировано.

Ответ №2:

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

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