Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

RailsアプリでTwitterログインを実装する方法:OmniAuth-Twitter完全ガイド

このチュートリアルでは、RailsアプリケーションのユーザーがTwitterアカウントを使ってログインできるようにする方法を解説します。OAuthなどのツールのおかげで、この実装はとても簡単に行えるようになりました。

今回は、OmniAuth用のTwitterストラテジーを含む「OmniAuth-Twitter」を使用します。

それでは始めましょう!

はじめに:プロジェクトの準備

まずはRailsアプリケーションを生成します。ターミナルで以下のコマンドを実行してください。

次にGemfileを開き、bootstrap gemを追加します。

以下のコマンドでgemをインストールしましょう。

app/assets/stylesheets/application.cssapp/assets/stylesheets/application.scss にリネームします。

完了したら、Bootstrapを読み込むために以下のコードを追加します。

ナビゲーションバーの作成

ナビゲーションコードを格納するため、_navigation.html.erb という名前のパーシャルを作成します。パーシャルは app/views/layouts ディレクトリに配置してください。

IDEに以下のコードを入力します。Bootstrapを使用して、アプリケーション用のナビゲーションバーを作成しています。

このナビゲーションを実際に使用するには、アプリケーションレイアウト内でレンダリングする必要があります。アプリケーションレイアウトを以下のように修正しましょう。

トップページの作成

次に、indexアクションを持つ PagesController を生成します。ターミナルで以下のコマンドを実行してください。

生成されたindexビューを以下のように編集します。

上記のコードでは jumbotron というクラスを使用しています。これはBootstrapのコンポーネントで、ビューポートを拡張してマーケティングメッセージを目立たせるのに役立ちます。詳細についてはBootstrap公式ドキュメントをご覧ください。

続いて、ルーティングファイルを開いて root_path を追加します。

OmniAuth-Twitterのセットアップ

まず、新しいTwitterアプリケーションを作成する必要があります。Twitterデベロッパーのページにアクセスしてアプリを作成し、必要な情報をすべて入力してください。

RailsアプリでTwitterログインを実装する方法:OmniAuth-Twitter完全ガイドRailsアプリでTwitterログインを実装する方法:OmniAuth-Twitter完全ガイドRailsアプリでTwitterログインを実装する方法:OmniAuth-Twitter完全ガイド

コールバックURLには、ウェブサイトのアドレスに「auth/twitter/callback」を加えたものを入力します。ローカル環境で開発している場合は、https://127.0.0.1:3000/auth/twitter/callback を指定してください。

登録が完了すると、Twitter上のアプリ情報ページへリダイレクトされます。Keys and Access Tokens(キーとアクセストークン)タブに移動してキーを取得し、Consumer KeyとConsumer Secretをコピーして安全な場所に保管しておきましょう。すぐに使用します。

コールバックURLについて

コールバックURLとは、認証と承認が成功した後に、ユーザーがアプリ内でリダイレクトされるURLのことです(リクエストにはユーザーのデータやトークンも含まれます)。すべてのOmniAuthストラテジーは、コールバックURLが「/auth/:provider/callback」と一致することを想定しています。:provider にはストラテジー名が入ります。今回の場合、イニシャライザで指定する通り、ストラテジーは「twitter」になります。

Gemのインストール

Gemfile を開き、omniauth-twitter gemを追加します。

次に、config/initializersディレクトリにOmniAuth用のイニシャライザを作成します。ここにOmniAuthの設定を記述します。以下のようにしましょう。

認証情報の安全な管理(dotenv-rails)

ここで、先ほど安全な場所に保管しておいたキーとアクセストークンが必要になります。これらは機密情報なので、コードをコミットするときに公開リポジトリへプッシュされないよう、適切に管理しなければなりません。

そこで便利なのがdotenv-railsというgemです。Gemfileを開いて以下のように追加しましょう。

以下のコマンドでgemをインストールします。

アプリケーションのホームディレクトリに .env というファイルを作成します。

ファイルを開き、キーとトークンを以下のように追記してください。

次に .gitignore を開き、先ほど作成したファイルを追加します。

これで、キーとアクセストークンは安全になりました!dotenv-rails の使い方についてさらに詳しく知りたい場合は、GitHubページを参照してください。

サインインリンクの設置

次にルーティングの作業です。ルーティングファイルを開いて、以下のルートを追加します。

Twitterでのサインイン用リンクをナビゲーションに追加しましょう。ナビゲーションファイルを開いて、以下のように修正します。

上記のコードでは、ユーザーが未ログインの場合にのみ、Twitterログインへのリンクが表示されるようになっています。

セッションの作成

ユーザーのログイン処理を扱うためのSessionsControllerが必要です。controllersディレクトリにファイルを作成し、以下のように記述します。

createアクションは、ユーザー向けのセッションを作成し、アプリケーションへのログインを可能にします。これがないと、ユーザーはログインする手段を持ちません。

この時点で、current_user メソッドも必要になります。このメソッドによって、ユーザーがログイン中かどうかを判定できます。

app/controllers/application_controller.rb を開いて、以下のコードを追加してください。

Userモデルの作成

続いて、Usersモデルを生成します。以下のコマンドを実行してください。

これにより、以下のようなマイグレーションファイルが生成されます。

以下のコマンドでデータベースをマイグレーションしましょう。

Userモデルを開いて、以下のように編集します。

上記のコードでは、ユーザーに関する一部の情報を保存しています。具体的には、名前(name)、プロフィール画像(profile_image)、トークン(token)、シークレット(secret)です。アプリケーションでより多くの情報が必要な場合は、OmniAuth-Twitterのページで取得可能なデータを確認してみてください。

セッションの削除(ログアウト)

アプリケーションでは、ユーザーがログアウトできる仕組みも提供したいところです。そのためには、SessionsControllerdestroy アクションを追加し、ナビゲーションにログアウトリンクを設置します。

SessionsControllerdestroy アクションを追加しましょう。

続いて、ログアウト用のリンクをナビゲーションに追加します。最終的なナビゲーションは以下のようになります。

最後に、config/routes.rbを開いて、作成したアクションに対応するルートを更新します。

Railsサーバーを起動し、ブラウザで https://localhost:3000 にアクセスして、動作を確認してみてください。

まとめ

このチュートリアルでは、RailsアプリケーションにOmniAuth-Twitterを導入する方法を学びました。UserモデルでOmniAuth-Twitterを使ってユーザーデータを取得する方法や、SessionControllerを作成してユーザーのログイン・ログアウトを処理する方法を確認しました。

今後の記事では、Facebook、Google、LinkedInでも同じようにソーシャルログインを実装する方法を紹介する予定です。お楽しみに!

  1. RubyのStructとOpenStructの使い方を徹底解説!値オブジェクトを簡単に作る方法

    Rubyには、関連する属性をまとめて保持する「値オブジェクト」を手軽に作れるStructという組み込みクラスが用意されています。本記事では、Structの基本的な使い方から注意点、そしてOpenStructとの違いまで詳しく解説します。 そもそもStructとは何か? StructはRubyに組み込まれたクラスで、新しいクラスを動的に生成し、値オブジェクト(Value Object)を作成するために使われます。値オブジェクトとは、関連性のある複数の属性をひとまとめにして扱うためのオブジェクトです。 具体例を挙げてみましょう。 2つの座標(xとy)を持つPointというデータを表したい場合、この

  2. Androidの「Google Now on Tap」活用ガイド:使い方を徹底解説

    Google Now on Tapとは?テクノロジーは日々進化し、私たちの生活をより便利にするためにアップデートが続けられています。せっかくなら、その最新機能について学び、上手に活用してみませんか。Googleは最近、自社アプリに「Google Now on Tap」という新機能を追加しました。この機能では、スマートフォンでの操作内容に関連した情報カードが自動的にポップアップ表示されます。例えば、最寄りの映画館を探しているときには、Google Now on Tapがカード形式で映画館への経路や所要時間を表示してくれます。また、あるバンドを検索すれば、そのバンドのアルバム情報や今後のライブ予定