【问题标题】:proper way to setup facebook canvas url and routes in a rails app在 Rails 应用程序中设置 facebook canvas url 和路由的正确方法
【发布时间】:2011-01-18 05:46:06
【问题描述】:

我有一个现有的 rails 应用程序,我正在向其中添加一个新控制器来处理来自我正在构建的小型 facebook 应用程序(使用 facebooker 插件)的请求。

在 facebook 应用程序的配置中,我将画布回调 url 设置为 http://my.host.ip/fb/

在纯 facebook 应用程序中,url 将离开 /fb/,用户将被定向到应用程序的主页。但由于这是一个现有的应用程序,我不能这样做。

现在在我的 routes.rb 中我有:

map.connect '/fb/like/:id', :controller => 'facebook_app', :action => "like"
map.connect '/fb/:category', :controller => 'facebook_app', :action => "index", :category => "default"

当用户访问 http://apps.facebook.com/my_app_name/ 时,Facebook 会调用 http://my.host.ip/fb/ 并且效果很好。

在该页面上,我有指向“喜欢”操作的链接:

<%= link_to "like", :controller => "fb", :action => "like", :id => id %>

唯一的问题是这些被渲染为:

http://apps.facebook.com/my_app_name/fb/like/12345

当我想要的是:

http://apps.facebook.com/my_app_name/like/12345

看看 /fb/ 是如何让我伤心的?

有没有办法解决这个问题?在路由定义中以某种方式说 /fb/ 仅用于传入的 URL?或在 url 生成器中以某种方式省略 /fb/?

我找到了一种解决方法……如果我将此路由添加到现有的“喜欢”路由之上:

map.connect '/like/:id', :controller => 'facebook_app', :action => "like"

那么第一个路由就是 link_to url 生成器使用的,并且生成了正确的 URL:

http://apps.facebook.com/my_app_name/like/12345

点击哪个会导致 facebook 向我的应用发出此请求:

http://my.host.ip/fb/like/12345

与原来的“like”路由匹配。

不过,我宁愿不必为我的 facebook 控制器中的每个操作都执行此操作。

【问题讨论】:

    标签: ruby-on-rails facebook routing facebooker


    【解决方案1】:

    您可以尝试将 callback_url 设置为 http://my.host.ip/。在该操作中,您可以使用 request_comes_from_facebook? 方法检测请求是否来自 Facebook,如果是,则将其重定向到您的 Facebook 控制器。

    然后您的后续链接将起作用。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 那为什么不适合我呢?看起来它忽略了 :conditions => {:canvas => true} 选项,以便它接管 / from map.home...lame
      猜你喜欢
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2016-11-06
      • 2023-03-12
      • 2017-10-06
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多