当应用程序重定向到页面选项卡时丢失Oauth授权

时间:2011-11-30 18:56:51

标签: ruby-on-rails facebook redirect oauth devise

我正在使用Oauth重定向授权方法为页面标签iframe应用程序提供授权。

流程的工作原理如下:

  • 用户加载页面标签(未经授权)
  • 用户点击授权链接
  • 授权对话框接管父窗口
  • 接受授权会使用授权电子邮件重定向到我的应用程序以注册用户帐户。
  • 我的应用程序重定向回页面标签
  • 加载页面选项卡会导致授权丢失,用户再次看到授权链接。冲洗,重复,没有成功。

令人困惑的是,如果不是重定向到Facebook页面标签,而是重定向到我的应用程序中的任何路径(即根目录,用户页面等),该应用程序将完全正常工作。只有通过将重定向设置为Facebook页面选项卡URL,用户才能“启动”。

更奇怪的是,如果我将重定向仅限于我的应用程序,而只是加载Facebook页面标签,那么授权就会被杀死。这意味着,在Facebook之后页面加载,在Facebook外刷新应用程序将提示用户再次授权,并且它们实际上已“退出”我的系统。

我正在将Rails 3.0.1和Devise 1.4.2用于用户帐户。用户授权将传递给Devise注册(我需要跟踪我的应用程序中的用户 - 基于投票的“竞赛”应用程序)。 Devise使用此处详述的“服务器端流程”:http://developers.facebook.com/docs/authentication/

我迷失了导致这种情况的原因。 Facebook杀了auth cookie?这会发生吗?

1 个答案:

答案 0 :(得分:0)

第一次访问facebook标签页时,必须使用signed_request: @signed_request = oauth.parse_signed_request(params[:signed_request])

因此,您可以在从其他页面重定向参数时发送参数,以检查它是否是第一次。