TimeTreeはAPIの利用にOAuthかパーソナルアクセストークンの利用が可能となっているが、今回はOAuthをRailsから利用する形で確かめてみたので、手順をメモしておく。
こんな感じで、Railsアプリ上のリンクを踏むと、TimeTreeのOAuth認証に飛び、ログインするとRailsアプリに戻ってくる。 Railsアプリの方では返ってきた時にアクセストークンの取得ができるので、それを利用してAPIを操作できる。 今回はコールバック後、そのままトップページに戻るだけのサンプルだが実際にはRais側でもログイン認証的な処理を行うことを想定する。
以下のgemを使わせていただく。
Railsインストール
以下にしたがってインストール&実行&Webアクセスできることを確認しておく
TimeTree 設定
以下からコンソールにアクセスし、「OAuth Apps」を作成する。 作成後、「連携情報」の「Redirect URL」に、Railsのログイン認証後のcallback用のURLを記載する。 「クライアントID」「クライアントシークレット」は控えておく。
Rails設定
route の追加
トップページと、コールバックのルートを追加しておく
root "welcome#index" get "/auth/:provider/callback" => "sessions#create"
コントローラ追加
トップページ用のコントローラ
class WelcomeController < ApplicationController def index end end
コールバックで処理するコントローラ
class SessionsController < ApplicationController def create # 認証後に取得できるトークン等、取れる # pp request.env redirect_to root_path end end
ビュー追加
トップページのファイルに以下追加 views/welcome/index.html.erb
<%= link_to "TimeTree(OAuth)", "/auth/timetree", method: :post %>
OAuth関連追加
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do provider :timetree, "[クライアントID]", "[クライアントシークレット]" end
Gemfile に以下追加し、 bundle install
gem "omniauth-timetree" gem "omniauth-rails_csrf_protection"
以上で動作するはず。