Я пытаюсь, чтобы пользователи могли публиковать сообщения в своих стенах Facebook на моем внешнем сайте.
Я столкнулся с проблемой в Safari. Если пользователь не вошел в систему, то есть он не прошел через поток, который вызывает FB.login (), я получаю следующую ошибку JS при вызове FB.ui ():
TypeError: 'undefined' не является объектом (оценка 'b.fbCallID = a.id')
Однако, если они вошли в систему, диалоговое окно выглядит просто отлично.
FB.ui () вызывается в функции обратного вызова - я получаю уникальный URL-адрес с моего сервера, а затем вызываю FB.ui (). Если я вызываю FB.ui () напрямую, он работает нормально, но не тогда, когда он асинхронный.
Вот код:
retrieveUrl(param1, param2, function(result) {
FB.ui({ method: 'feed',
description: 'My Description',
display: 'dialog',
link: result.uniqueUrl,
picture: 'http://foo.com/bar.jpg'
}, function(response) {
if (response && response.post_id) {
//Posted message
} else {
//Not posted message
}
});
});
Это работает в других браузерах, независимо от того, вошли они в систему или нет.