Rails Api с devise_token_auth выдает "ActiveModel::ForbiddenAttributesError:

Я хочу собрать RailsAPI с помощью входа в Facebook, поэтому я выбрал devise_token_auth, Я следовал инструкции и бегу rails g devise_token_auth:install User auth, мои маршруты выглядят как

routes.rb

Rails.application.routes.draw do
  mount_devise_token_auth_for 'User', at: 'auth'
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

Так что это материал, который исходит от генератора. Я зарегистрировал свое приложение на Facebook для разработчиков, храню Facebook-ключ и Facebook-секрет в файле env. Когда я ударил в первый раз localhost:3000/auth/facebook он перенаправляет меня на Facebook auth popup, я нажимаю кнопку и затем появляется ошибка.

введите описание изображения здесь

Должен ли я переопределить контроллер из устройства своим собственным? Как это сделать? Или есть какие-то другие решения?

Я хотел бы отметить, что это мой первый раз, когда я строил API с помощью рельсов.

1 ответ

Я решил проблему, когда переписать assign_provider_attrs

route.rb mount_devise_token_auth_for 'User', at: 'auth' , controllers: { omniauth_callbacks: 'authentication_rails/omniauth_callbacks' }

Контроллеры / проблемы /authentication_rails/omniauth_callbacks_controller

module AuthenticationRails class OmniauthCallbacksController < DeviseTokenAuth::OmniauthCallbacksController protected # break out provider attribute assignment for easy method extension def assign_provider_attrs(user, auth_hash) if auth_hash['provider'] == 'facebook' user.assign_attributes({ nickname: auth_hash['info']['nickname'], name: auth_hash['info']['name'], image: auth_hash['info']['image'], email: auth_hash['info']['email'] }) else super end end end end

Другие вопросы по тегам