Sli*_*k23 5 ruby-on-rails-3 facebook-canvas
我正在使用before_filter来检测signed_request用户被引用到画布应用程序时Facebook生成的查询字符串.
然后,session[:canvas] = true当我根据用户是在画布中还是在本机浏览器应用程序上需要不同的应用程序逻辑时,我设置并测试它.问题是,如果用户出于任何原因离开画布并导航到基于浏览器的应用程序,则该session[:canvas]变量仍设置为true.
有没有更好的方法来检测画布和本机浏览器应用程序之间的差异?
我个人喜欢为 Facebook 应用程序使用“别名”url,例如在应用程序设置中使用而fb.mysite.com不是www.mysite.com进行设置,以便两个域指向同一位置。或者可以对目录执行类似的操作,例如www.mysite.com/fb/指向相同的位置,www.mysite.com/但为代码提供了一种简单的方法来确定它是直接访问还是来自应用程序。
使用会话也可以工作,但是如果您当前处于“应用程序模式”(canvas==true),则必须添加额外的 javascript 检查。javascript 只是检查页面是否位于 iframe 内,如果不是,则会重定向到类似www.mysite.com/thispage?app=0. 您的页面应检查参数app=0并清除会话(如果存在)(或设置 canvas=false)。这样,如果用户从 Facebook 开始,然后直接访问您的网站,事情会自动正确调整。