Facebook JS SDK: обратный вызов FB.ui не работает - нужен рабочий пример кода - PullRequest
4 голосов
/ 17 марта 2012

Когда я использую диалог Отправить с помощью вызова Facebook JS SDK FB.ui, обратный вызов не запускается.

FB.ui(
      {
          method: 'send',
          to: ****,            // fbId 
          redirect_uri: *****, // public URL in my app domain 
          link: *****          // public URL 
      },
      function(response) {
          alert('callback was called!');
          if (response != null) {
               console.log('Request was passed along!');
               location.href= ***;    // just in case redirect_uri doesn't work
               return true;
          }
          else {
               console.log('Not passed along. User clicked cancel');
          }
      }

);

Ожидаемое поведение: Предупреждение должно отображаться.Консольное сообщение должно быть зарегистрировано.И пользователь должен быть отправлен на redirect_uri.

Фактическое поведение: Ничего из этого не происходит.Откроется диалоговое окно «Отправить», и поле to: заполнено правильно.Когда я нажимаю Отправить, он отправляется правильно.Но мне нужно, чтобы обратный вызов был запущен, а пользователя нужно отправить на redirect_uri.

Ответы [ 3 ]

2 голосов
/ 08 сентября 2012

Удалите элемент redirect_uri, и будет выполнен обратный вызов.

Я столкнулся с той же проблемой несколько минут назад и понял, что удаление redirect_uri решило ее.

1 голос
/ 17 марта 2012

Каждый FB.UI имеет функцию обратного вызова, и это также относится к диалогу отправки.

См. Этот документ для общего синтаксиса для FB.UI.

Но проблема в том, что, как и в других методах FB.UI, метод SEND не имеет возвращаемого значения.

Согласно документации Facebook,

Если отправка сообщения прошла успешно, пользователь будет перенаправлен на redirect_uri.В противном случае будет отображена ошибка.В отличие от кнопки «Мне нравится», само по себе возвращаемое значение не существует.

Так что, если отправка сообщения прошла успешно и у вас нет redirect_uri, то обратный вызов не будет иметь ничего в качестве возвращаемого значения, а в противном случаеотправляет сообщение об ошибке, если отправка сообщения не удалась.

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

FB.ui({
          method: 'send',
          name: 'People Argue Just to Win',
          link: 'http://www.nytimes.com/2011/06/15/arts/people-argue-just-to-win-scholars-assert.html',
          },
          function(response){
           alert(response);
           if(response != null){
            alert('user clicked send');
           }else{
            alert('user clicked cancel');
           }
          });

, когда вы нажимаете кнопку отправить, и сообщение успешно отправлено, оно выдаст предупреждение о пустой строкеи когда вы нажмете «Отмена», он выдаст «ноль».

0 голосов
/ 26 марта 2012

Вы проверяли в других браузерах? Проверьте настройки браузера один раз. У вас установлено расширение типа " Facebook Disconnect "?

...