Всплывающее окно Fb.ui() работает, но диалог загружается навсегда
Я хочу попросить пользователя предоставить разрешение "publish_stream" моему приложению с помощью javascript sdk facebook.
Я инициализирую это так:
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/ которой говорится следующее об использовании "iframe" в качестве отображения: "Из-за риска перехвата кликов это разрешено только для некоторых определенные диалоги, и требует, чтобы вы передали действительный access_token "
Ничего подобного не говорит о мысли "диалог", но и iframe, и диалог дают одинаковый плохой результат.
Как мне пройти в access_token?
2 ответа
"popup" является обязательным для метода: "oauth" или FB.login для javascript SDK из-за безопасности (перехвата кликов и фишинга). Я бы предложил использовать FB.login в любом случае для получения разрешений или для аутентификации, потому что это более удобно.
надеюсь это поможет
Существует также несоответствие в способе использования display: iframe для FB.login в зависимости от того, находитесь ли вы на вкладке или на холсте. На вкладке вам не нужен access_token, а на холсте вы делаете.
Таким образом, на холсте вы застряли либо с заблокированными всплывающими окнами, либо с хорошим процентом пользователей, отказывающихся предоставить базовые разрешения для чего-то такого простого, как публикация на собственной стене, которую они инициировали. IMVHO FB нужно исправить это как можно скорее, но я регистрировал ошибку в течение нескольких месяцев, и никаких признаков изменений не было.