Rails:尝试连接到Facebook时,OAuth2 gem返回400错误

时间:2011-05-06 21:11:27

标签: ruby-on-rails authentication facebook oauth-2.0

我正在尝试将Facebook连接添加到我们的网络应用程序中,而且我遇到了问题。一切都在本地运行良好(我可以通过Facebook验证),但是当我将代码推送到我们的开发服务器(它生活在野外)时,每次我尝试验证它时都会返回以下错误代码:

OAuth2::HTTPError: Received HTTP 400 during request

这才是我得到的唯一解释。再次,这适用于我的本地机器,宝石和盒子之间的这种匹配,所以我有点困惑。这是我正在执行的代码。

def facebook_connect
  #Set the scope we want to pull from Facebook, along with the callback URL
  options = {
    :redirect_uri => facebook_callback_url,
    :scope => "email,publish_stream"
  }

  #Go out and fetch the url
  client = OAuth2::Client.new(FACEBOOK_API_KEY, FACEBOOK_SECRET, {:site => FACEBOOK_API_URL, :access_token_method => :post})
  #Redirect to the callback for processing
  redirect_to client.web_server.authorize_url(options)
end

def facebook_callback
  #Client URL
  client = OAuth2::Client.new(FACEBOOK_API_KEY, FACEBOOK_SECRET, {:site => FACEBOOK_API_URL, :access_token_method => :post})

  #Parse out the access token
  access_token = client.web_server.get_access_token(params[:code], :redirect_uri => facebook_callback_url)

  #Get the user
  fb_user = JSON.parse(access_token.get('/me'))

  #Do some authentication database stuff
end

def facebook_callback_url
  uri = URI.parse(request.url)
  uri.path = '/users/facebook_callback'
  uri.query = nil
  uri.to_s
end

我搜索了Google,但显示的解决方案无效。此外,如果有人知道如何解析和显示OAuth2错误,我也将不胜感激。感谢

2 个答案:

答案 0 :(得分:0)

假设Facebook OATH知道您的服务器的IP地址(他们对此非常严格),我建议您使用'rescue'来捕获该异常,获取回溯然后找到它被提升和放置的位置一堆调试语句,用于检查请求和响应的状态,以及访问令牌。

或者您可以使用Rubymine或NetBeans配置远程调试,这不是一项简单的任务:)

答案 1 :(得分:0)

这个问题实际上最终成为了“法拉第”宝石的一个问题。我们的开发服务器未设置为处理SSL,后者返回错误代码。我们使用以下答案修补它:

OmniAuth & Facebook: certificate verify failed