はじめに
こんにちは^^
こちらの記事ではTwitterAPIを使って、ツイートをしてみたいと思います。
この記事は、コントローラーを読み込んでツイートするものになります。
Formを踏ませると手順が増えますので、使っておりません。Formからツイートする方法は別の記事で公開いたします。
Gemfile
まずはGemfileに下記を記述します。
そして bundle install コマンドを打ってください。
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.4.2'
.
..
...
....(省略します)
gem 'twitter'
Keyを記述し、ツイートを投稿する
ご自身で作成してあるいずれかのControllerに下記を記述してください。
TwitterAPIを使って、ツイートするためには、updateメソッドを使用します。
updateメソッドの第一引数にツイート内容を指定します。
ツイートの文字列を指定する際には、140字の制限がございますのでお気をつけください。
Topコントローラーのindexアクションを読み込むとクライアントに指定したアカウントでツイートされていると思います^^
class TopController < ApplicationController
def index
# Twitterのクライアントを作成する。
client = Twitter::REST::Client.new do |config|
config.consumer_key = "**********"
config.consumer_secret = "**********"
config.access_token = "**********"
config.access_token_secret = "**********"
end
# ツイートする
@client.update("API使ってツイートしました!")
end
end
画像付きツイートも
画像付きツイートをTwitterAPIから行う場合は、 update_with_media メソッドを使用します。
update_with_mediaメソッドでは、第一引数にツイート内容、第二引数に画像のパスを指定します。画像を指定する際には、Railsのopenメソッドを使用しています。このopenメソッドは、seed.rbに画像のテストデータを作りたい場合にも使用できますので試してみてください^^
Rails.rootは現在使用しているRailsアプリケーションのパスを自動で読み込んでくれます。Macの場合はRails.rootを指定すると、/Users/ユーザー名/Railsアプリケーション名というパスが読み込まれると思います。
class TopController < ApplicationController
def index
# Twitterのクライアントを作成する。
client = Twitter::REST::Client.new do |config|
config.consumer_key = "**********"
config.consumer_secret = "**********"
config.access_token = "**********"
config.access_token_secret = "**********"
end
# 画像付きツイートをする
@client.update_with_media(API使って画像付きツイートしました!, open("#{Rails.root}/app/assets/images/solect.png"))
end
end
ツイート機能のAPI制限
こちらのツイート機能には2019年8月25日時点で、3時間に300回までという制限がございます。(~時点と記述しているのは、こういったAPIは制限がちょくちょく変わるためです。数年前はもっと制限が緩かったです。。)
終わりに
以上がTwitterのAPIでツイートをする方法です。
初めて実装した時は、ツイートをするだけでも苦労したことを覚えています。。
プログラミングの勉強をしている方、独学で勉強している方など、少しでも助けになれればと思います^^