6

OmniAuth 経由で Twitter にユーザーをサインインさせることができました (Railscast #235-6 に従って簡単なアプリケーションを作成しました)。現在、ログインしているユーザーの Twitter フィードを表示しようとしています。誰がこれがどのように行われるか教えてもらえますか? Twitterを初期化するにはどうすればよいですか? ログインしたユーザーのユーザー名とパスワードを渡すにはどうすればよいですか? 私は Rails を初めて使用するので、コードを配置する場所を正確に知っていれば役に立ちます。ありがとう

4

2 に答える 2

17

まず、Twitterフィードが公開されている場合、Twitterフィードを取得するためにユーザーの資格情報は必要ありません。Twitterの宝石を見てください 。gemをインストールしたら、必要なのは次のことだけです。

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

開始するには、IRBで試してみてください。とても簡単ですよね?

Twitterは匿名リクエストを制限しているため、APIキーを使用することをお勧めします。これは、共有サーバーからの問題になる可能性があります。イニシャライザでそれを行います:

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開発者ページから実際の値を取得します。

最後に、実際にスケールアップしたい場合は、OmniAuthから取得したOAuthクレデンシャル(ユーザー名とパスワードではなく、ユーザー名とパスワードはありません)を使用して、ユーザーに代わってリクエストを行うことができます。これにより、さまざまなユーザーからのリクエストであるため、1秒あたりのリクエスト数を増やすことができます。OmniAuthハッシュから取得したものに設定されたフィールドconsumer_keyとフィールドを使用してTwitterを初期化するだけです(OmniAuthから取得する方法については、「資格情報」の下を参照してください)consumer_secret

于 2012-04-16T07:32:21.953 に答える
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
于 2016-08-11T07:50:31.310 に答える