Railsの定番gem「devise」「OmniAuth」で、Twitter連携を実装しよう
これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール 第4回
ダウンロード サンプルファイル (146.8 KB)
前回まで、OmniAuthが提供する機能の概要を確認するとともに、実際にdeviseと連携して、RailsアプリにFacebook連携機能を実装し、動作確認を行いました。また、dotenv-railsを導入して環境変数を.envに定義して使えることも確認しました。今回は、引き続きTwitter連携の機能を実装しながら、ユーザー情報を編集できるようにしていきます。
SNS認証用リンクのビュー
Twitter連携を実装する前に、現時点でログイン画面にアクセスすると既にTwitter連携用の[Sign in with Twitter]リンクが表示されている箇所の処理を確認しておきます。
まずログイン画面に対応するビューを確認します。
…(中略)… <%= render "devise/shared/links" %>
ファイルの末尾に定義されている通り、パーシャルによって切り出されていることが分かります。続いて該当ファイルを確認します。
…(中略)…
<%- if devise_mapping.omniauthable? %>
<%- resource_class.omniauth_providers.each do |provider| %>
<%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
<% end -%>
<% end -%>
パーシャル末尾のブロックの1行目では、Omniauthableモジュールが有効になっているかどうかを判定しています。具体的には、UserモデルでDSLのdeviseに:omniauthableが定義されているかどうかを確認します。既にFacebook連携時の対応で有効にしているため、ここではtrueが返ります。
2行目以降のeachブロックで、Userモデルのomniauth_providersに指定されたSNS連携の対象メディアごとにループして[Sign in with[メディア名]]リンクを生成しています。以下、Userモデル冒頭のdeviseの定義部分を再掲しておきます。
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, omniauth_providers: [:twitter, :facebook]
なお、現時点で[Sign in with Twitter]リンクをクリックすると、「Not found. Authentication passthru.」とエラーメッセージが表示されます。これを解消するには、Facebook連携でconfig/initializers/devise.rbにアプリID/シークレットキーを設定したように、Twitterでも同様の設定を行う必要があります。
Twitter開発者サイト上でアプリを追加
Twitter連携をできるようにするため、Twitter Application Managementからアプリを追加します。Twitterにログインして開発者サイトにアクセスし、右上の[Create New App]ボタンをクリックするとアプリケーションの作成画面に遷移します。ここでは以下の通り入力しました。
このままだとFacebook同様、メールアドレスを取得することができないので、追加の設定を行います。登録完了後、[Settings]タブをクリックして[Privacy Policy URL][Terms of Service URL]テキストボックスに任意のURLを入力して[Update Settings]ボタンをクリックします。
なお、これらの設定項目は、そのサイトのプライバシーポリシーと利用規約が記述されたURLです。メールアドレスは個人情報にあたるので、本番運用時にはその取り扱いに関するサイトの取り決めが記述されたページを別途用意する必要があります。
ここでは本番公開しないサンプルアプリなので任意のURLで埋める対応で問題ありません。以下の通り入力しました。
続いて[Permissions]タブをクリックし「Additional Permissions」にある[Request email addresses from users]チェックボックスをクリックしてチェックをONにした状態で[Update Settings]ボタンをクリックします。
[Keys and Access Tokens]タブをクリックし「Application Settings」に記載されている「Consumer Key (API Key)」の値と「Consumer Secret (API Secret)」の値をメモしておきます。
これで一通り必要なTwitterアプリの設定は完了です。
この記事は参考になりましたか?
- これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール連載記事一覧
- この記事の著者
-
WINGSプロジェクト 竹馬 力(チクバ ツトム)
< WINGSプロジェクト について> 有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
