hinokiyoの手順書

自分のためにも手順書チックなものを残していければなと思っています。

deviseのomni_authとdevise_token_authのomni_authを両立する手順

動機

docker環境のrailsでVue.js使って開発。
deviseでomni_authはできる。
devise_token_authでomni_authはできる。
どちらも実装してdeviseのomni_authをすると、なぜか401 unauthorizedエラー。
なんとかして両立させたい。deviseのomni_authでログイン後にSPAを表示したいから。

手順

下記ページにあるようにdeviseのモジュールを2回記述すると両立可能です。
Devise Omniauth and DeviseTokenAuth Omniauth · Issue #666 · lynndylanhurley/devise_token_auth · GitHub

  1. deviseとdevise_token_authを両立させる実装をする。
    netで調べてください。
  2. user.rbのinclude DeviseTokenAuth::Concerns::Userの前後にdeviseのモジュール(同じもの)を記述する。
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,
         :omniauthable, omniauth_providers: [:twitter]
    include DeviseTokenAuth::Concerns::User
    devise :database_authenticatable, :registerable,
          :recoverable, :rememberable, :trackable, :validatable,
          :omniauthable, omniauth_providers: [:twitter]

何故か上記手順でdeviseのomni_authログインが可能になります。
また、config/initializers/devise_token_auth.rbに下記を設定していれば
config.enable_standard_devise_support = true
APIaccess_token なしでも使えるようになります。

もっといい方法知ってる方、教えて下さい。