TimeTreeはAPIの利用にOAuthかパーソナルアクセストークンの利用が可能となっているが、今回はOAuthをRailsから利用する形で確かめてみたので、手順をメモしておく。
こんな感じで、Railsアプリ上のリンクを踏むと、TimeTreeのOAuth認証に飛び、ログインするとRailsアプリに戻ってくる。
Railsアプリの方では返ってきた時にアクセストークンの取得ができるので、それを利用してAPIを操作できる。
今回はコールバック後、そのままトップページに戻るだけのサンプルだが実際にはRais側でもログイン認証的な処理を行うことを想定する。
以下のgemを使わせていただく。
github.com
以下にしたがってインストール&実行&Webアクセスできることを確認しておく
docs.docker.com
TimeTree 設定
以下からコンソールにアクセスし、「OAuth Apps」を作成する。
作成後、「連携情報」の「Redirect URL」に、Railsのログイン認証後のcallback用のURLを記載する。
「クライアントID」「クライアントシークレット」は控えておく。
developers.timetreeapp.com
route の追加
トップページと、コールバックのルートを追加しておく
root "welcome#index"
get "/auth/:provider/callback" => "sessions#create"
コントローラ追加
トップページ用のコントローラ
class WelcomeController < ApplicationController
def index
end
end
コールバックで処理するコントローラ
class SessionsController < ApplicationController
def create
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"
以上で動作するはず。