内容
RailsでツイッターAPIを用いてツイートの取得を行います。
ツイッターAPIキーの取得
Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ ※2019年8月時点の情報
上記の記事を参考に作成しました。
APIキー取得後ツイート取得のための下準備をします。
.envファイルの使用
APIキーを念のために.envに書くようにする
Gemfileに gem 'dotenv-rails'
を記載しbundle
Gemfile
gem 'dotenv-rails'
$ bundle install
.envファイルの編集
.env
TWITTER_CONSUMER_KEY=取得したキーを入れてください
TWITTER_CONSUMER_SECRET=取得したキーを入れてください
TWITTER_ACCESS_TOKEN=取得したキーを入れてください
TWITTER_ACCESS_TOKEN_SECRET=取得したキーを入れてください
settings.ymlの編集
settings.yml
twitter_api:
consumer_key: <%= ENV['TWITTER_CONSUMER_KEY'] %>
consumer_secret: <%= ENV['TWITTER_CONSUMER_SECRET'] %>
access_token: <%= ENV['TWITTER_ACCESS_TOKEN'] %>
access_token_secret: <%= ENV['TWITTER_ACCESS_TOKEN_SECRET'] %>
ツイート検索
準備
Gemfileに gem 'twitter''
を記載しbundle
Gemfile
gem 'twitter'
$ bundle install
検索(Controller)
ハッシュタグ付きまたは、ハッシュタグなしのキーワードで検索しています。
.rb
def index
@tweets ||= []
tweet_search('検索するワード')
end
def tweet_search(keyword)
# ツイート検索のオプションを記入
twitter_params = { count: 15, lang: 'ja', result_type: 'recent', exclude: 'retweets', tweet_mode: 'extended' }
begin
@tweets = twitterClient.search("##{keyword} OR #{keyword}", **twitter_params).take(10).map do |tweet|
{
tweet_link: "https://twitter.com/#{tweet.user.screen_name}/status/#{tweet.id}"
}
end
rescue => exception
@tweets = []
end
end
def twitterClient
@twitterClient ||= Twitter::REST::Client.new do |config|
config.consumer_key = Settings.twitter_api.consumer_key
config.consumer_secret = Settings.twitter_api.consumer_secret
config.access_token = Settings.twitter_api.access_token
config.access_token_secret = Settings.twitter_api.access_token_secret
end
end
表示
ツイッターにはツイートを表示する際に規約があるのでそれに準ずるためにレイアウトを独自に組むOR埋め込み、今回は埋め込みを使います。
https://developer.twitter.com/en/developer-terms/display-requirements.html
.erb
<% @tweets.each do |tweet| %>
<blockquote class="twitter-tweet tw-align-center" data-lang="ja" data-cards="hidden">
<%= link_to '',tweet[:tweet_link], target: :_blank %>
</blockquote>
<% end %>
<%= javascript_include_tag '//platform.twitter.com/widgets.js', charset: 'utf-8', async: 'async' %>