Ваша проблема в том, что функции Facebook еще не загружены к тому времени, когда вы пытаетесь их использовать. По данным Facebook:
Почти все JS API Facebook Connect загружаются асинхронно после вызова FB.init (). Из-за асинхронного характера JS API не обязательно доступны сразу после выполнения этих вызовов. Вы должны использовать FB.ensureInit или FB.Bootstrap.requireFeatures, чтобы убедиться, что API JS загружаются перед их использованием.
У нас есть вики-документация, которая описывает это более подробно. Однако мы только что узнали, что некоторые приложения Connect вызывали API Connect JS, например FB.Connect. * И FB.Facebook. * Сразу после вызова FB.init. Этот подход может вызвать периодические сбои, потому что функции еще не могут быть загружены.
Их документация довольно хорошая (не завершена на 100%) и будет полезна для вас. Пока этого должно быть достаточно, чтобы обернуть ваш код следующим образом:
function sendRequestViaMultiFriendSelector() {
FB.ui({method: 'apprequests',
message: 'My Great Request'
}, requestCallback);
}
function requestCallback(response) {
// Handle callback here
window.location.href = "test.php";
}
FB_RequireFeatures(["Connect"], function() {
FB.init({
appId : 'XXXXXXXXXXXXXXXXXXXXX',
status : true,
cookie : true,
oauth: true
});
sendRequestViaMultiFriendSelector();
});