Facebook JavaScript Send Dialog, функция обратного вызова работает некорректно - PullRequest
5 голосов
/ 07 февраля 2012

Я пытаюсь выполнить функцию обратного вызова в FB.ui (диалог отправки). Он вызывается в тот же момент, когда загружен FB.ui, но я хочу выполнить функцию обратного вызова после нажатия кнопки «отправить» или «отменить». Реализуемо ли это?

function callback(response) {
      alert('message was sent');
}

FB.ui({
                method: 'send',
                name: 'Dialog',
                link: 'http://***.com',
                redirect_uri: '****',
                description: '***',
                picture: '***',
                to: userId
            },
                callback(response)
            );

Ответы [ 4 ]

3 голосов
/ 15 марта 2012

Для обратного вызова требуется функция в качестве параметра. Здесь вы фактически вызываете функцию.

Facebook фактически вызовет функцию, которую вы передаете, вместе с ответом.

Вместо того, чтобы передавать «обратный вызов (ответ)» в качестве параметра обратного вызова, просто передайте «обратный вызов» следующим образом:

function callback(response) {
      alert('message was sent');
}

FB.ui({
       method: 'send',
       name: 'Dialog',
       link: 'http://***.com',
       redirect_uri: '****',
       description: '***',
       picture: '***',
       to: userId
       },
       callback
);
2 голосов
/ 15 января 2014

Проблема, вероятно, была решена или не имеет отношения к OP, но это может помочь некоторым другим, которые натыкаются на пост.

По аналогии с комментарием Майка Джеремы по поводу ответа Фиша (из-за недостаточного количества повторений комментировать там нельзя)

Ответный обратный вызов, полученный от пользователя, взаимодействующего с диалоговым окном отправки, возвращает одну из трех вещей:

  1. Если щелкнуть «Отправить», пустой массив передается обратно (instanceof Object)
  2. Если нажать Отмена, возвращается ноль
  3. Если щелкнуть «X» в углу диалогового окна, возвращается значение undefined.

Поэтому правильный код для обработки этого обратного вызова для всех вариантов использования будет:

var callback = function(response) {
               if (response instanceof Object)
               {        
                   //Send clicked

                }
                else if (response === null)
                {
                    //Cancel clicked
                }
                else 
                    //X clicked
            };

Надеюсь, это поможет! :)

1 голос
/ 04 июля 2012

Да, я не уверен, что это ваш случай, но кажется, что при тестировании в средах разработки есть ошибка, в основном из-за проблемы, связанной с параметром порта в URL.

Проверьте это: http://developers.facebook.com/bugs/380566711996797

потрачено впустую, как 2 часа, из-за этой "ошибки"

0 голосов
/ 17 апреля 2013

Это сводило меня с ума в течение более 2 часов в диалоговом окне подачи, затем в качестве последней канавы я добавил свойство отображения

method: 'feed',
display: 'popup'

Эта строка не обязательна, так как используется по умолчанию, но, возможно, оназаставляет диалог вести себя правильно, и он вытащил меня из дыры.Стоит попробовать диалог отправки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...