Rails
Rails5
devise_token_auth

Rails APIモード + devise_token_auth に Twitter 認証を導入する(その1)

ここに書いてある内容は

基本的に以下の公式ドキュメントに書いてあること以外はやっていません。
ググるといろいろと情報が出てきて困惑しますが、だいたい公式ドキュメントをしっかり見れば前に進めるはずです(願望)。

実装(追加したコード)

Gemfile
gem 'omniauth-twitter'
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  # ENV には dotenv とかを使って設定しましょう。KEY/SECRET はツイッターのサイトで登録してゲットしてください。
  provider :twitter, ENV['TWITTER_API_KEY'], ENV['TWITTER_API_SECRET']
end
config/application.rb
config.session_store :cookie_store, key: '_interslice_session'
config.middleware.use ActionDispatch::Cookies # Required for all session management
config.middleware.use ActionDispatch::Session::CookieStore, config.session_options
app/model/user.rb
class User < ActiveRecord::Base
  # Include default devise modules.
  devise :database_authenticatable, :registerable,
          :recoverable, :rememberable, :trackable, :validatable,
          :omniauthable # こいつを追加していなければ追加する
  include DeviseTokenAuth::Concerns::User
end

さてこの後どうする?

rails routes してみましょう。

...省略
                 GET      /v1/auth/:provider/callback(.:format)  devise_token_auth/omniauth_callbacks#omniauth_success
                 GET|POST /omniauth/:provider/callback(.:format) devise_token_auth/omniauth_callbacks#redirect_callbacks
omniauth_failure GET|POST /omniauth/failure(.:format)            devise_token_auth/omniauth_callbacks#omniauth_failure
                 GET      /v1/auth/:provider(.:format)           redirect(301)

この一番下が redirect(301) となっています。
:provider の部分を twitter に置き換えクライアント側から叩くと、無事 Twitter の認証ページがレスポンスに含まれてやってきます。

良かったですね。

(その2に続くはず)

2018/01/31 追記

その後いろいろと壁にぶち当たりうまくいっていないため、その2は解決次第書くはず。。。