在rails中使用httparty请求进行插值

时间:2015-07-14 18:12:22

标签: ruby-on-rails interpolation httparty

我想向facebook图表发出一个http请求(使用httparty gem)以检查来自客户端的令牌是否有效,但我认为插值不适用于httparty

response = HTTParty.get("https://graph.facebook.com/me?access_token=#{params[:access_token]}")
render json: response

但这给了我回复

{"error":{"message":"Bad signature","type":"OAuthException","code":1}}

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

  

我认为插值不适用于httparty

插值是一种Ruby语法功能;你的字符串在传递给HTTParty之前进行插值。

您可以通过检查网址调试此内容:

uri = "https://graph.facebook.com/me?access_token=#{params[:access_token]}"
Rails.logger.info(uri)
response = HTTParty.get(uri)

无论如何,在使用HTTParty的查询参数时,不应该使用插值。您应该使用:query选项传递它们,这将确保参数编码正确:

response = HTTParty.get( "https://graph.facebook.com/me",
                         query: { access_token: params[:access_token] })

但是,我不确定这实际上会解决您的问题。这个问题很可能真的存在于你的OAuth流中的其他地方 - 使用OAuth时存在很多错误。