我正在对facebook api进行oauth调用以获取access_token
def access_token
token_uri = URI("https://graph.facebook.com/oauth/access_token?client_id=#{CLIENT_ID}&client_secret=#{CLIENT_SECRET}&grant_type=client_credentials")
token_response = HTTParty.get(token_uri)
Rails.logger.info(token_response)
return token_response
end
我得到了一个响应并生成了access_token,让我们说
access_token=123456789|abcdefghijk
但是当我尝试使用此令牌时
def get_feed
fb_access_token = access_token
uri = URI("https://graph.facebook.com/#{VANDALS_ID}/posts/?#{fb_access_token}")
端
我收到错误
URI::InvalidURIError: bad URI(is not URI?)
并且uri生成在|停止即使管道后面有更多字符来完成我的access_key
https://graph.facebook.com/id-here/posts/?access_token=123456789|
如何获取URI中的完整访问令牌
任何帮助表示赞赏
由于
答案 0 :(得分:7)
您收到错误的原因是在正确的URI中不允许使用|
符号,因此需要在解析之前对其进行转义。 URI附带了一种为您完成此操作的方法:
uri = URI(URI.escape "https://graph.facebook.com/#{VANDALS_ID}/posts/?#{fb_access_token}")
uri.to_s #=> https://graph.facebook.com/id-here/posts/?access_token=123456789%7Cabcdefghijk
当请求url时,服务器应自动对其进行解码,因此所有应该按预期工作。