Может произойти несколько вещей:
1) Всплывающее окно блокируется
Чтобы это исправить, вам нужно запустить запрос на действие пользователя. В противном случае большинство браузеров блокируют автоматические всплывающие окна при загрузке страницы. Попробуйте это:
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<a href="#" onclick="apprequest()">Do request</a>
<script>
FB.init({appId:'YOUR_APP_ID', cookie:true,status:true, xfbml:true});
function apprequest () {
FB.ui({ method: 'apprequests',
message: 'Here is a new Requests dialog...'});
}
</script>
Другая хитрость заключается в том, чтобы заставить его использовать метод отображения iframe (вместо всплывающего окна), который не блокируется браузерами:
FB.ui({ method: 'apprequests','display':'iframe',
message: 'Here is a new Requests dialog...'});
2) Библиотека FB JS еще не загружена
Это действительно будет проблемой, только если вы используете метод асинхронной загрузки , который вы не используете в этом примере. Но если это так, и вы видите ошибку «FB не определено» в консоли JavaScript, то вам просто нужно убедиться, что у вас есть либо всплывающий триггер запроса на пользовательское событие (как ссылка выше), либо вызовите его в асинхронный обратный вызов.
Удачи!