我正在尝试从rails应用程序中的Twitter Streaming API获取数据,我已经创建了自己的模块,该模块为我提供twitter Authorization Head
。我可以获得授权,但我没有得到回复。。。我看到的只是处于pending
状态的请求(我猜测它的流和连接没有关闭)。我可以对下面的代码做些什么,这样我就可以开始打印从流API获得的响应了?
class MainController < ApplicationController
include Oauth::Keys
def show
@oauth_signature_string = Oauth::Signature.generate(signature_params)
@header = Oauth::HeaderString.create(header_params)
RestClient::Request.execute(method: :GET, url: 'https://stream.twitter.com/1.1/statuses/sample.json', :headers => {:Authorization => %Q(OAuth ****************************)} )
end
end
因为Twitter正在"流式传输"数据而没有关闭连接,所以您的RestClient
请求没有结束,您的show
操作挂在那里而没有"完成"。因此,rails无法继续并呈现默认的main/show.html.erb
页面。
因此,您可能需要研究ActionController::Streaming
类,看看是否可以重写视图和HTTP调用以利用它。或者,使用非流式API边缘会更容易。
此外,您所做的似乎更适合javascript。您可能想使用Twitter的官方Javascript api来进行所有身份验证和状态流。