はじめに
Railsアプリで作ったブログなどで更新内容をTwitterに投稿するといった連携機能を実装する方法を解説します。
実装するにはまずTwitter APIに登録する必要があるのですが、登録方法が年々(主に複雑なほうへと)変化しているようなので、2019年12月現在の登録方法で書いています。
Twitter APIに登録
Twitter Developerにアクセスします。
右上のAppsをクリックします。
右上のCreate an appをクリックします。
注意書きを読みApplyボタンをクリックします。
HobbyistのMaking a botを選択してNextボタンをクリックします。
アカウントの情報が表示されるので、間違いないか確認して下へスクロールします。
英語 | 日本語 | 回答 |
---|---|---|
What country do you live in? | 居住国は? | Japan |
What would you like us to call you? | ニックネームは? | 適当に入力 |
Want upates about the Twitter API? | Twitter APIの更新情報が必要? | チェックしない |
Nextボタンをクリックします。
Twitter APIをどういう用途で使用するか英語で記述します。できるだけ詳細に書くと審査と承認が下りやすいらしいです。200文字以上入力する必要があります。
すべてNoに変更します。Yesにする場合はその理由を英語で記述する必要があります。
表示されている内容に間違いがなければLooks good!ボタンをクリックします。
利用規約を読み、チェックボックスをオンにしてSubmit Applicationボタンをクリックします。
登録メールアドレスにメールが送られました。
Confirm your emailボタンをクリックします。
Create an appをクリックします。
もう一度Create an appボタンをクリックします。
必須(required)項目を入力します。アプリの説明は英語じゃなくても大丈夫です(たぶん)。
最後にCreateボタンをクリックします。
利用規約を読んで問題なければCreateボタンをクリックします。
Keys and tokensをクリックします。
API key/API secret key/Access token/Access token secretをコピーしておきます。トークンはCreateボタンをクリックすると表示されます。
Railsアプリの実装
まず、rails g scaffold
などで記事の投稿機能を実装しておきます。
次にGemfile
に以下を追加してbundle install
を実行します。
gem 'twitter'
記事のコントローラーを以下のように変更します(以下は関係あるところだけ記載しています)。
class ArticlesController < ApplicationController
before_action :twitter_client, only: [:create]
def create
@article = Article.new(article_params)
if @article.save
@client.update("#{@article.title} #{article_url(@article.id)}\r")
redirect_to articles_path
else
render 'new'
end
end
private
def twitter_client
@client = Twitter::REST::Client.new do |config|
config.consumer_key = Rails.application.credentials.twitter[:api_key]
config.consumer_secret = Rails.application.credentials.twitter[:api_secret_key]
config.access_token = Rails.application.credentials.twitter[:access_token]
config.access_token_secret = Rails.application.credentials.twitter[:access_token_secret]
end
end
end
ざっくりと以下の流れになっています。
create
メソッドを実行する前にtwitter_client
メソッドを実行。twitter_client
メソッドでCredentialsから取得した認証情報を設定しTwitterクライアントを作成。create
メソッドでTwitterクライアントを使用してTwitterに更新内容をツイート。
まとめ
Twitter APIの登録が少し面倒ですが、登録さえしてしまえばRailsの実装は簡単なので、RailsとTwitterの連携機能を実装してみてください。