【问题标题】:How to display a users' twitter timeline on rails如何在 Rails 上显示用户的 Twitter 时间线
【发布时间】:2014-03-27 20:19:17
【问题描述】:

我正在尝试在我的网站上显示我自己的 twitter 时间线,我创建了在控制台上运行良好的代码,但是当我尝试在我的应用程序上执行此操作时,我得到了整个响应正文,而不仅仅是推文'文本。

附:我正在尝试使用 NET::HTTP 而不是 httParty 或 twitter gem 从头开始​​学习。

我正在通过控制器的帮助器发出请求。

def twitter_timeline
    baseurl = "https://api.twitter.com"
    path = "/1.1/statuses/user_timeline.json"
    query = URI.encode_www_form("screen_name" => "twitterapi", "count" => 5)

    address = URI("#{baseurl}#{path}?#{query}")
    request = Net::HTTP::Get.new address.request_uri

    def print_tweets(tweets)
       tweets.each do |tweet|
         puts tweet["text"]
       end
    end

    http = Net::HTTP.new address.host, address.port
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER

    consumer_key ||= OAuth::Consumer.new("SECRET", "SECRET")
    access_token ||= OAuth::Token.new("SECRET","SECRET")

    request.oauth! http, consumer_key, access_token
    http.start
    response = http.request request

    tweets = nil

    if response.code == '200' then
       tweets = JSON.parse(response.body)
       print_tweets(tweets)
    end

    nil
end

然后我像这样在视图上调用它:

<%= twitter_timeline %>

【问题讨论】:

  • 为什么print_tweets 嵌套在twitter_timeline 中?这没有任何意义。无论如何,您应该返回要从您的twitter_timeline 方法中显示的格式化字符串。 不要在你的方法中使用puts
  • @mischa 当我使用 return 时,我只得到最后一条推文,而不是请求的 5
  • 您必须构建一串 5 条推文,然后将其返回。现在你似乎在迭代推文,最后只返回最后一条,而忽略前四个。你必须这样做:return tweets.map { |tweet| tweet['text'] }.join("\n\n")。然后用simple_format格式化时间线:&lt;%= simple_format(twitter_timeline) %&gt;
  • 这很有效,谢谢! @Mischa

标签: ruby ruby-on-rails-4 net-http


【解决方案1】:

最简单的方法是使用嵌入式时间线功能https://dev.twitter.com/docs/embedded-timelines

【讨论】:

  • 他说他想从头开始构建一些东西,所以我看不出这有什么帮助。
猜你喜欢
  • 2017-12-25
  • 2020-02-01
  • 2013-04-23
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
相关资源
最近更新 更多