LoginSignup
41

More than 5 years have passed since last update.

RubyでTwitter APIを利用する

Posted at

Rubyで自分のアカウントのツイートが行えるかを調べたメモ

TwitterのAPIを利用するには
- CONSUMER KEY
- CONSUMER SECRET
- ACCESS TOKEN
- ACCESS TOKEN SECRET
が必要。以下手順

Twitter developersへログイン

デベロッパーサイトよりアカウントを作成。APIが使用できるのは自分だけのため、TwitterUserは使用したいアカウント名を記入すること

アプリケーションの作成

事前にアカウントと電話番号のヒモ付が必要。
websiteは(http://127.0.0.1) でおk

アクセスレベルの変更

「Application Type」を「Read and Write」にしておく

アクセストークンの取得

webサイトなどで使う場合は、都度アクセストークンが発行されるので必要ないが、ボットなどを作成する場合はTwitter認証を行わない代わりにアクセストークンの取得が必要となる。

SSL証明書のインストール

SSL証明書をインストールしてRubyにわかるようにしないと例外を吐く
ここから証明書の内容をコピペし、任意のファイル(cacert.pemとか)に貼り付ける。

スクリプト内でRubyに証明書の場所を教えてやるには

ENV["SSL_CERT_FILE"] = PEM_PATH

してやればよい。

サンプルコード

require "twitter"
include Constants

ENV["SSL_CERT_FILE"] = <PEM_PATH>

class TwitterClient

  attr_reader = :client

  def initialize()
    @client = Twitter::REST::Client.new do |config|
      config.consumer_key        = <CONSUMER_KEY>
      config.consumer_secret     = <CONSUMER_SECRET>
      config.access_token        = <Constants::ACCESS_TOKEN>
      config.access_token_secret = <ACCESS_TOKEN_SECRET>
    end
  end

  def twieet(str)
    @client.update(str)
  end

  # 自分のプロフィールを表示
  def show_my_profile
    puts @client.user.screen_name   # アカウントID
    puts @client.user.name          # アカウント名
    puts @client.user.description   # プロフィール
    puts @client.user.tweets_count  # ツイート数
  end

  # 指定したアカウントのプロフィールを表示
  def show_user_profile(user_name)
    puts @client.user(user_name).screen_name  #アカウントID
    puts @client.user(user_name).name         # アカウント名
    puts @client.user(user_name).description  # プロフィール
    puts @client.user(user_name).tweets_count # ツイート数
  end

  # タイムラインの表示
  def show_timeline
    @client.home_timeline.each do |tweet|
      puts tweet.full_text
      puts "FAVORITE: #{tweet.favorite_count}"
      puts "RETWEET : #{tweet.retweet_count}"
    end
  end

  # 指定数の最新のツイートを表示
  def show_recently_twieet(user_name, twieet_count)
    @client.user_timeline(user_name, { count: twieet_count } ).each do |timeline|
      tweet = @client.status(timeline.id)
      puts tweet.created_at
      puts tweet.text
    end
  end

  # 指定ワードを検索。param:countは件数
  def search(word, count)
    @client.search(word).take(count).each do |tweet|
      tweet
    end
  end

end

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41