Отправляя запрос GET на /auth/twitter
, я успешно аутентифицируюсь в Twitter и перенаправляю на /auth/twitter/callback
.
Но, отправляя запрос GET на /api/current_user
, сервер API всегда возвращает null
. И, user_signed_in?
всегда возвращаю false
Я не могу знать, как войти в систему с Twitter. Я хочу получить current_user
Как войти в систему через Twitter?
* Версия :
Rails (режим API) 5.1.6
ruby 2.4.0
routes.rb
Rails.application.routes.draw do
mount_devise_token_auth_for 'User', at: 'auth', controllers: {
omniauth_callbacks: "overrides/omniauth_callbacks",
}
namespace :api, format: 'json' do
root 'posts#index'
get 'current_user', to: 'users#current'
end
end
omniauth_callbacks.rb
module Overrides
class OmniauthCallbacksController < DeviseTokenAuth::OmniauthCallbacksController
def assign_provider_attrs(user, auth_hash)
all_attrs = auth_hash["info"].slice(*user.attributes.keys)
orig_val = ActionController::Parameters.permit_all_parameters
ActionController::Parameters.permit_all_parameters = true
permitted_attrs = ActionController::Parameters.new(all_attrs)
permitted_attrs.permit({})
user.assign_attributes(permitted_attrs)
ActionController::Parameters.permit_all_parameters = orig_val
user
end
end
end
users_controller.rb
class Api::UsersController < ActionController::API
def current
render json: current_user
end
end