Rails
Rails5
devise_token_auth

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

More than 1 year has passed since last update.


ここに書いてある内容は

基本的に以下の公式ドキュメントに書いてあること以外はやっていません。

ググるといろいろと情報が出てきて困惑しますが、だいたい公式ドキュメントをしっかり見れば前に進めるはずです(願望)。


実装(追加したコード)


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は解決次第書くはず。。。