不保存会话的Facebook应用程序的画布

我做了一个测试Facebook应用程序只是为了玩,我使用会话来存储鉴别。 我使用omniauth。 当我去从http://fbbtest.heroku.com/登录,然后刷新页面会话仍然保存,它说,我在我登录时,我尝试从画布HTTP://apps.facebook .COM / herokutestapp /它记录我,重定向回,并说我登录,但后来当我手动刷新它,然后说我没有登录。是不是有什么特别的,我有在轨道3届这么做这也适用于Facebook的印刷品吗?

这是我目前在我的控制器和视图

def index end def create session['fb_auth'] = request.env['omniauth.auth'] session['fb_token'] = session['fb_auth']['credentials']['token'] session['fb_error'] = nil redirect_to root_path end def destroy clear_session redirect_to root_path end def failure clear_session session['fb_error'] = 'In order to use this site you must allow us access to your Facebook data<br />' redirect_to root_path end def clear_session session['fb_auth'] = nil session['fb_token'] = nil session['fb_error'] = nil end

索引视图

<div class="container"> <h1>Heroku FB Test application</h1><br /> <div class="center"><br /> <%=session[:fb_error]%> <% if session[:fb_token] %> <p> Successfully logged in. </p> <a href='logout'>Logout</a> <% else %> <%= session[:fb_error] %><br /> <%= link_to "Log in with Facebook", "/auth/facebook",:class => "popup", :"data-width" => 600, :"data-height" => 400 %> <br /> <p> please log in </p> <% end %> </div> </div>

--------------解决方案-------------

你可能会碰到的问题是,Rails的CSRF伪造检测乳化身份验证的某些部分是因为请求进来作为HTTP POST方法。

在你的ApplicationController中的第一行是大概是这样的:

class ApplicationController < ActionController::Base
protect_from_forgery
[...]

删除“protect_from_forgery'行,看看是否与你的问题有所帮助。 如果原来是这样,回去设置一个更有限的基础上(只是相关的控制器,看到这里的文档:http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html)

有获取Omniauth在http://www.communityguides.eu/articles/16工作一个很好的例子,以及完整的示例代码是https://github.com/markusproske/omniauth_pure。 关于这一点,他们有以下几点:

class ServicesController < ApplicationController
before_filter :authenticate_user!, :except => [:create, :signin, :signup, :newaccount, :failure]
protect_from_forgery :except => :create

你既需要这些行的一些变种,使omniauth,Facebook和导轨会议发挥得很好。 如果不适合你的工作,职位从环境/ production.rb您OmniAuth :: Builder的信息(与细节XXXed出),并在您使用的身份验证控制器,这将是调试这个有用的任何其他相关的代码。

它可能会更容易发展轨道使用Facebook的使用http://tunnlr.com或其他服务(或只是一个SSH隧道http://blog.kenweiner.com/2007/09/reverse-ssh-tunnel-for调试应用程序时-facebook.html),可以让你在本地机器上运行调试器,它是搞清楚这些各种各样的问题出非常有帮助。

会话和饼干Facebook的内部框架是非常难用,但并非不可能。 试图开发票一次每一天比赛的时候,我面对这几次。

的解决方案是使用P3P头。 老实说,我不太清楚他们是如何工作的,但它降低了内部框架的跨浏览器的cookies的问题 - 尤其是IE浏览器和Safari。

以下内容添加到每个页面的顶部:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

这可能不是解决您的问题究竟但希望它可以帮助你在正确的道路上。

如果我cookies.permanent.signed[:fb_auth]它可以让我返回到应用程序在Facebook上,而无需重新登录这是绕过会议通过的iFrame不工作的最好方法?

这听起来像一个第三方cookie的问题。 你肯定使用cookies.permanent.signed正常工作,如果你只访问通过Facebook网站? 尝试清除饼干,重新启动浏览器,然后将Facebook的画布页面,并再次测试。

在Firefox中,尝试将工具 - >选项 - >隐私,看是否“接受第三方cookie”被选中。 如果是,请检查并重新测试。

这并不奇怪,第三方cookies可能会导致您的问题,令人困惑的部分就是为什么使用永久性Cookie应该使任何区别。

如果验证第三方cookie是问题,恐怕没有简单的解决方案,如果你想要的应用程序是每个人都可以访问。 你必须完全停止使用饼干,仅使用GET / POST传递的值维持会话状态。

分类:Ruby on Rails的 时间:2012-01-01 人气:0
分享到:

相关文章

  • 红宝石/ Ruby on Rails的,连续的循环轮询数据库 2013-10-03

    所以,我有几个外部数据库和我想要得到相当接近实时的数据传输. 我会只是做一个简单的查询如: select count(total) from invoices where date = 'today'; // pseudo code 所以我想找到一种方法,不断打电话,可为天/月结束上没有问题运行数据库查询,如果有问题,自愈/重启 建议?

  • Web服务:PHP或Ruby on Rails的或Python? 2013-10-16

    我是通过我白天工作一个.net / SQL Server开发,并在身边,我做了一些客观的C开发的iPhone. 我想开发一个Web服务,自Dreamhost的支持MySQL,Python和Ruby on Rails和PHP5,我想用这些语言之一,它来创建. 如果你有在任Python和Ruby on Rails的或PHP没有经验,你会去,为什么? 这项服务基本上只需要一个请求,会谈到MySQL数据库. 注:正计划使用SOAP协议..虽然我很愿意听取建议,因为我有一个干净的石板用这些语言. ----

  • Ruby on Rails的 - 在“要求”:无法加载这样的文件 - omniauth / OAuth的,即使我安装omniauth 2012-10-06

    我下面这个指南(http://devcenter.heroku.com/articles/omniauth-and-force-com)与Ruby on Rails的挂钩Salesforce.com REST API. 我在我的一部分,我输入"轨生成器会创建",但我得到一个错误说omniauth / OAuth的都找不到,即使我肯定安装. 该指南还指出,我需要输入 gem 'omniauth', '0.2.0' gem 'httparty' 但每当我这样做,我得到一个错误说"

  • on Rails的捆绑问题上TextMate的红宝石,你对HTML(Rails)的模式和Ruby on Rails的模式有什么区别? 2012-12-19

    当使用开发Rails项目Textmate ,也有一些相关的模式. 当按下WIN + Alt + Shift + R键,你会得到模式的列表: 红宝石 HTML(滑轨) Ruby on Rails的(RJS) Ruby on Rails的 SQL(滑轨) 我想知道的区别HTML (Rails)和Ruby on Rails . 任何人都可以解释一下吗? 谢谢. --------------解决方案------------- Ruby on Rails的模式是与控制器/型号/助理等工作 HTML(Rai

  • 红宝石和/或Ruby on Rails的,这是个问题,从非编码器 2013-06-20

    我是一个非编码器,我非常擅长的HTML. 我要自我教自己的Ruby和Ruby on Rails的,因为我听说这是一个很好的技能有,但是特别是因为它也许是得知与我的HTML背景一件容易的第一语言. 我想创造我的网页,这将目录我的照片,使用Ruby on Rails. 对于非编码HTML的用户像我一样,这将是一个平滑的过渡: 1)回报率前红宝石 要么 2)同时学习既 谢谢! --------------解决方案------------- 我是在同第一阶段一个月就恢复你现在在哪里. 2例在这里: 从第

  • 红宝石FTP通过明确的TLS /在Ruby on Rails的SSL 2013-11-10

    可能重复: 在Ruby on Rails应用程序FTPS(TLS / SSL) 嗨伙计, 如何从红宝石(ROR)连接到FTPS(FTP通过明确的TLS / Ruby的Rails的对SSL)主机? 谷歌搜索并没有提供答案. --------------解决方案------------- 找到了解决方法:我们可以用lftp实用工具,然后从红宝石调用它. lftp -f file_with_command 其中"file_with_command'文件,我们指定: lftp -u %s,%s %s g

  • 请问主机托管服务提供商,以支持“Ruby on Rails的”或“只是红宝石”,以运行Rails? 2013-11-12

    是否主机托管服务提供商必须支持"Ruby on Rails的"或"只是红宝石",以运行Rails? 我知道主要是PHP和问自己,"Ruby on Rails的"行为与红宝石......就像"Zend框架",以PHP:只是一堆PHP文件,我可以在我的项目文件夹中复制,我的主机供应商只需要支持PHP. 我问我的主机只支持Ruby(而不是Rails的). 如果我couild只是在项目中复制轨道上SFTP,我想给它一个尝试. ----

  • 可红宝石降价呈现? Ruby on Rails的应用 2014-04-21

    是否有可能使用降价红宝石在我的Ruby on Rails应用程序? 我使用了隆重的接待宝石,我有我的应用程序控制器下. class ApplicationController < ActionController::Base before_filter :get_contact_info private def get_contact_info @contact = Contact.last end end 下面是联系的架构 create_table "contacts", :f

  • 老红宝石bug在我的反复出现的Ruby on Rails的应用程序,涉及到Class.create和的delayed_job 2014-06-25

    该缺陷是很多个月大,在这里: http://www.ruby-forum.com/topic/1094002 两个链接在其中显示代码更改: https://github.com/godfat/ruby/commit/f4e0e8f781b05c767ad2472a43a4ed0727a75708 https://github.com/godfat/ruby/commit/c7a6cf975d88828c2ed27d253f41c480f9b66ad6 我有红宝石1.9.2和RVM. 我会粘贴这些

  • Ruby on Rails的 - 新的红宝石的帮助耙分贝:迁移 2014-07-12

    我是新用户Ruby on Rails和时遇到的一个问题: rake db:migrate . 之后,我捆绑安装,下面出现: $ bundle install Using rake (0.9.2) Using abstract (1.0.0) Using activesupport (3.0.9) Using builder (2.1.2) Using i18n (0.5.0) Using activemodel (3.0.9) Using erubis (2.6.6) Using rack (1

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.311 (s). 10 q(s)