Help us understand the problem. What is going on with this article?

コピペでできる RailsでTwitterAPIを使う ツイート編

More than 1 year has passed since last update.

はじめに

サービスの各種告知やプロモーションにTwitterを利用する人は多いのではないでしょうか?
Railsで作られたWebシステムからのTwitter操作が思った以上に容易に実装できるので紹介します。
今回は、文字列のツイートを解説します。

このシリーズでは、ソースをコピペするだけで機能を実装できることを目標に記述しています。

事前準備

コピペでできる RailsでTwitterAPIを使う 準備編

update

ツイートを行うオペレーションはupdateです。
http://www.rubydoc.info/gems/twitter/Twitter%2FREST%2FTweets:update
使い方はとてもシンプルで簡単!引数にツイートしたい文字列を渡すだけでOKです。
ちなみに改行は\nです。

class TwitterController < ApplicationController
  before_action :set_twitter_client

  def update
    @twitter.update("テスト1\nブログのためテストしています。(後で消します)")
    render plain: "Twitter.update"
  end

  private

  def set_twitter_client
    @twitter = Twitter::REST::Client.new do |config|
      config.consumer_key        = "YOUR_CONSUMER_KEY"
      config.consumer_secret     = "YOUR_CONSUMER_SECRET"
      config.access_token        = "YOUR_ACCESS_TOKEN"
      config.access_token_secret = "YOUR_ACCESS_SECRET"
    end
  end
end

/twitter/updateを実行すると以下のようにツイートされます。

スクリーンショット 2018-02-08 19.05.04.png

しっかりツイートされていますねー。簡単!

update!

Twitterは同じ内容のツイートを連続で投稿できません。
また、同じ内容を連続での投稿を続けるとアプリケーションがBANされます。(経験談)

できるだけupdateではなくupdate!を使用してエラー処理をすることをオススメします。
http://www.rubydoc.info/gems/twitter/Twitter%2FREST%2FTweets:update!
ツイート内容が重複している場合にraiseしてくれます。

updateupdate!の動作比較

(先ほどのツイートの後に実行したものです)

class TwitterController < ApplicationController
  before_action :set_twitter_client

  def update
    begin
      @twitter.update("テスト1\nブログのためテストしています。(後で消します)")
    rescue => e
     error = e
    end
    render plain: error || "Twitter.update"
  end

  private

  def set_twitter_client
    @twitter = Twitter::REST::Client.new do |config|
      config.consumer_key        = "YOUR_CONSUMER_KEY"
      config.consumer_secret     = "YOUR_CONSUMER_SECRET"
      config.access_token        = "YOUR_ACCESS_TOKEN"
      config.access_token_secret = "YOUR_ACCESS_SECRET"
    end
  end
end

スクリーンショット 2018-02-08 19.11.50.png

updateはエラーがraiseされず、ツイートはされません。

class TwitterController < ApplicationController
  before_action :set_twitter_client

  def update
    begin
      @twitter.update!("テスト1\nブログのためテストしています。(後で消します)")
    rescue => e
     error = e
    end
    render plain: error || "Twitter.update"
  end

  private

  def set_twitter_client
    @twitter = Twitter::REST::Client.new do |config|
      config.consumer_key        = "YOUR_CONSUMER_KEY"
      config.consumer_secret     = "YOUR_CONSUMER_SECRET"
      config.access_token        = "YOUR_ACCESS_TOKEN"
      config.access_token_secret = "YOUR_ACCESS_SECRET"
    end
  end
end

スクリーンショット 2018-02-08 19.11.46.png

update!はエラーがraiseされて、ツイートはされません。

終わりに

拍子抜けするほど簡略化されていて、gem作成者には頭が上がりません!
updateは第二引数に色々なオプションを指定できます。
その辺もおいおい説明できたらなと考えています!

ブログ記事で見たい方はこちら → コピペでできる RailsでTwitterAPIを使う ツイート編

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした