Канал FB.ui не дает обратного вызова
Я не могу получить какую-либо обратную связь от моего метода Facebook FB.UI(). Я убежден, что я использую это правильно, поскольку фактическое сообщение действительно отправляет к моей стене, но данные обратного вызова либо отсутствуют, либо пусты. Я использую:
FB.ui({
method: 'feed',
name: 'asd',
link: 'asd',
picture: '',
description: 'asd'
}, function(response) {
console.log(response);
if(response.post_id) {
$.post("ajax/wall.php",{wall : 1});
} else {
}
}
);
6 ответов
Я не уверен, как это решило себя, но это сделало:)
Я очистил свой кеш и изменил свой код на ниже, и это сработало (однако я не верю, что изменение кода действительно повлияло на это:
FB.ui({method: 'feed',name: '',link: '',picture: '',description: 'asd'}, function(data) {
console.log(response);
if(data && data.post_id) {
$.post("ajax/wall.php",{wall : 1});
} else {
alert("not sent");
}
});
Удалить redirect_uri
пункт и обратный звонок будет уволен.
Я столкнулся с той же проблемой несколько минут назад и понял, что удаление redirect_uri
решил это.
Для тех, кто столкнулся с этой проблемой позже, у меня была точно такая же проблема, и я исправил ее так:
<div class="post-view-backdrop hide" id='post-view-backdrop'>
<div id="fb-root"></div>
стал
<div class="post-view-backdrop hide" id='post-view-backdrop'></div>
<div id="fb-root"></div>
Div post-view-background никогда не должен был содержать корень fb, я просто пропустил закрывающий тег.
Проблема была в неправильном образовании HTML вокруг моего fb-root. Я нашел это только на догадках, определенно причина использовать HTML-валидатор.
У меня та же проблема, и я так и не смог получить ответ от Facebook для функции обратного вызова. Я не вижу ничего в console.log или каких-либо предупреждений, которые я вставляю в функцию.
Мое решение состояло в том, чтобы поместить URL в redirect_uri FB.ui, который идет на страницу HTML с self.close (или window.close). Всплывающее окно FB.ui перенаправляется туда после ввода пользователя и немедленно закрывается. Не забудьте изменить настройку URL сайта вашего приложения FB, чтобы она соответствовала домену, в котором находится файл.
Вот мой код, связанный с действием отправки моей формы. Функция (ответ) обратного вызова все еще там, но не используется. Если кто-то видит синтаксическую ошибку, пожалуйста, прокомментируйте ее.
FB.ui ({
method: 'feed',
name: '',
link: '',
picture: '',
caption: '',
description: '',
actions: {name:'',link:''},
redirect_uri: 'http://.../self.close.html'
},
function(response) {
console.log(response);
if (response && response.post_id) {
alert('yes');
self.close();
} else {
alert('else yes');
}
});
Строка кода в self.close.html:
<script type="text/javascript">self.close();</script>
Для всех, кто занимается Phonegap, решает эту проблему - проблема с плагином fb connect. Он просто не запускает обратные вызовы.
Вот фрагмент кода от FacebookConnectPlugin.m:
////////////////////////////////////////////////////////////////////
// FBDialogDelegate
/**
* Called when the dialog succeeds and is about to be dismissed.
*/
- (void)dialogDidComplete:(FBDialog *)dialog
{
// TODO
}
/**
* Called when the dialog succeeds with a returning url.
*/
- (void)dialogCompleteWithUrl:(NSURL *)url
{
// TODO
}
/**
* Called when the dialog get canceled by the user.
*/
- (void)dialogDidNotCompleteWithUrl:(NSURL *)url
{
// TODO
}
/**
* Called when the dialog is cancelled and is about to be dismissed.
*/
- (void)dialogDidNotComplete:(FBDialog *)dialog
{
// TODO
}
Я не программист Objective C, поэтому я не пытаюсь решить эту проблему, вероятно, придется подождать, пока плагин не будет завершен...