Канал 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>

Установка redirect_uri отключает обратный вызов

Для всех, кто занимается 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, поэтому я не пытаюсь решить эту проблему, вероятно, придется подождать, пока плагин не будет завершен...

Другие вопросы по тегам