2

精简版

登录后,有没有办法让 facebook POST 从他们的 oauth 对话框返回到您的返回 url?

有背景故事

我正在开发一个 Rails 应用程序,用户可以在其中购买产品。为了购买产品,他必须通过创建请求来请求它。该请求存储了产品的 id、产品所有者的 id 以及请求者的 id,只是为了将这三者相互关联。

所有这些都是通过发送的表单发生的,当然,通过 post 请求。

棘手的部分来了:用户必须登录才能发出请求。他们可以通过 facebook 登录。在我的应用程序控制器中,我目前有以下方法来检查用户是否已登录:

def user_signed_in?
  unless current_user # from other method
    flash[:error] = "Please log in first."
    redirect_to root_path and return false
  end

  true
end
helper_method :user_signed_in?

我想更改root_path为 facebook auth dialog url。目前,我有以下内容:

def user_signed_in?
  unless current_user
    raise "https://www.facebook.com/dialog/oauth/?client_id=#{ENV['FACEBOOK_APP_ID']}&redirect_uri=#{request.url}&scope=#{User::BASIC_PERMISSIONS}"
    redirect_to "https://www.facebook.com/dialog/oauth/?client_id=#{ENV['FACEBOOK_APP_ID']}&redirect_uri=#{request.url}&scope=#{User::BASIC_PERMISSIONS}" and return false
  end

  true
end

到目前为止,这一切都很好——登录后,facebook 将我重定向到正确的 url。但是,重定向必须通过发布请求进行,否则将不会创建请求记录。脸书支持吗?理想情况下,我的帖子参数不会在此过程中丢失?我已经检查了facebook关于此事的文档并搜索了网络,但找不到任何东西。

4

0 回答 0