ここに書いてある内容は
基本的に以下の公式ドキュメントに書いてあること以外はやっていません。
ググるといろいろと情報が出てきて困惑しますが、だいたい公式ドキュメントをしっかり見れば前に進めるはずです(願望)。
- https://github.com/lynndylanhurley/devise_token_auth#omniauth-authentication
- https://github.com/arunagw/omniauth-twitter
実装(追加したコード)
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は解決次第書くはず。。。