Вопрос по ruby-on-rails – Отображение канала Twitter из приложения Rails

6

Мне удалось сделать так, чтобы пользователь входил в Twitter через OmniAuth (я следовал за Railscast # 235-6 и сделал простое приложение). Сейчас я пытаюсь отобразить ленту Twitter вошедшего в систему пользователя. Может кто-нибудь сказать мне, как это делается? Как мне инициализировать Twitter? Как передать имя пользователя и пароль вошедшего в систему пользователя? Я новичок в Rails, поэтому было бы полезно, если бы я точно знал, куда поместить код. Спасибо

Может быть, этоstackoverflow.com/questions/1665213/… помогает. gayavat
@gayavat Я видел эту страницу. Он не показывает никакого кода. Что мне нужно, так это точно знать, что мне нужно набрать, чтобы получить информацию из авторизованного пользователя Twitter. katherine
@gayavat Извините, я нахожу это действительно запутанным ... Я не пытаюсь хранить свои собственные твиты. Я ищу сокращенную версию. katherine
Последний комментарий указывает наarctickiwi.com/blog/… где пример кода присутствует gayavat

Ваш Ответ

2   ответа
0

    BASE_URL = "http://api.twitter.com/1.1/statuses/user_timeline.json"
    SCREEN_NAME = "OMGFacts"
    MAX_TWEETS = 10000

    CONSUMER_KEY = "PMiAyrY5cASMnmbd1tg"
    CONSUMER_SECRET = "0TYRYg0hrWBsr1YZrEJvS5txfA9O9aWhkEqcRaVtoA"

    class << self
      def base_url
        BASE_URL
      end

      def screen_name
        SCREEN_NAME
      end

      def url(count = MAX_TWEETS)
        params = {:screen_name => screen_name, :count => count}
        [base_url, params.to_param].join('?')
      end

      def prepare_access_token(oauth_token, oauth_token_secret)
        consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET,
          { :site => "http://api.twitter.com",
            :scheme => :header,
          })
        # now create the access token object from passed values
        token_hash = { :oauth_token => oauth_token,
                       :oauth_token_secret => oauth_token_secret,
                       :open_timeout => 500000000
                     }
        access_token = OAuth::AccessToken.from_hash(consumer, token_hash )
        return access_token
      end

      def get(count = MAX_TWEETS)
        count = Preference.get(:2000).to_i
        access_token = prepare_access_token("178394859-cJlRaiQvqVusPAPjqC2Nn7r3Uc7wWsGua7sGHzs","3T8LCZTYXzuPLGzmWX1yRnKs1JFpfJLKemoo59Piyl8")
        response = JSON.parse access_token.request(:get, url).body

        response[0...count]
      end

    end

  end
17

вам не нужны учетные данные пользователя для получения канала Twitter, если он общедоступный. Посмотрите на Щебетать жемчужина, После того, как вы установите гем, все, что вам нужно сделать, это:

require 'twitter'
Twitter.user_timeline("icambron")

Попробуйте в IRB, чтобы начать. Довольно легко, правда?

Теперь вы, вероятно, хотите использовать свой ключ API, потому что Twitter ограничивает анонимные запросы, и это может быть проблематично с общего сервера. Сделай это винициализатор:

Twitter.configure do |config|
  config.consumer_key = YOUR_CONSUMER_KEY
  config.consumer_secret = YOUR_CONSUMER_SECRET
  config.oauth_token = YOUR_OAUTH_TOKEN
  config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end

Получить фактические значения со своей страницы разработчика Twitter.

Наконец, чтобы по-настоящему придумать, если вы хотите увеличить масштаб, вы можете сделать запрос от имени пользователя, используя учетные данные OAuth, которые вы получили от OmniAuth (НЕ их имя пользователя и пароль; у вас их нет). Это позволит вам делать намного больше запросов в секунду, потому что они приходят от разных пользователей. Просто инициализируйте Twitter с помощьюconsumer_key а такжеconsumer_secret поля, соответствующие содержимому, полученному из хеша OmniAuth (см.Вотпосмотрите в разделе "учетные данные" чтобы увидеть, как получить их от OmniAuth).

Кроме того, что вы подразумеваете под "Просто инициализировать Twitter ..."? katherine
Вау, наконец-то это работает! БЛАГОДАРЮ ВАС! katherine
Error: User Rate Limit Exceeded katherine
Error: User Rate Limit Exceededuser_timelineError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded katherine

Похожие вопросы