Facebooker: перенаправление после fb_user_action - PullRequest
0 голосов
/ 26 апреля 2009

Я пытаюсь использовать Facebooker для публикации историй в Facebook. Когда пользователь отправляет форму на моем сайте, я использую fb_user_action , чтобы показать диалоговое окно с вопросом, можно ли опубликовать статью. Когда это отклонено, я хочу перенаправить на другую страницу.

Документация Facebook для showFeedDialog говорит о параметре продолжения. Требуется функция JavaScript, которая будет вызываться после закрытия диалога. Я не могу заставить эту функцию быть вызванной.

<script language="javascript">
var continuation = function () {
  location.href = 'http://target-url.com';
}
</script>

<% init_fb_connect "XFBML","Api" do %>
  <%= fb_user_action(@action, @message, @prompt, 'continuation') %>
<% end %>

Все работает отлично, за исключением того, что функция продолжения не вызывается. Есть предложения, что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2009

Я просто больше копался в этом. Я считаю, что это ошибка Facebooker. Мне пришлось обернуть параметр обратного вызова в вызове page.literal. Модифицированный метод, который работает ниже:

def fb_user_action(action, user_message = "", prompt = "", callback = nil)
  update_page do |page|
    page.call "FB.Connect.showFeedDialog",action.template_id,action.data,action.target_ids,action.body_general,nil,page.literal("FB.RequireConnect.promptConnect"),page.literal(callback),prompt,user_message
  end
end

Я свяжусь с разработчиком Facebooker, чтобы попытаться исправить это в следующей версии.

0 голосов
/ 26 апреля 2009

Хорошо, я никогда не использовал Ruby в своей жизни, но что-то в этом вызове Facebooker мне кажется неправильным. Вот как выглядит fb_user_action по вашей ссылке:

def fb_user_action(action, user_message = "", prompt = "", callback = nil)
  update_page do |page|
    page.call "FB.Connect.showFeedDialog",action.template_id,action.data,action.target_ids,action.body_general,nil,page.literal("FB.RequireConnect.promptConnect"),callback,prompt,user_message
  end
end

Итак, исходя из того, что я посмотрел на страницу page.call, мне кажется, что он сгенерирует javascript следующим образом:

FB.Connect.showFeedDialog(template_id,data,target_ids,body_general,nil,promptConnect,callback,prompt,user_message);

Однако подпись showFeedDialog:

FB.Connect.showFeedDialog(template_id,data,body_general,target_ids,callback,prompt,user_message)

Порядок параметров, которые генерирует функция Facebooker fb_user_action для Javascript, кажется мне совершенно неправильным. Параметр обратного вызова выглядит так, как будто он будет заменен на ноль, поэтому ничего не будет вызвано.

Что если вместо вызова fb_user_action вы просто использовали page.call сами, но с параметрами в правильном порядке?

Опять же, я не могу понять синтаксис page.call и / или Ruby здесь. Но я бы дважды проверил эту функцию Facebooker, так как API FB все время меняется.

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