Неопределенный метод `resource_owner_id' для nil:NilClass Doorkeeper

Я занимаюсь настройкой Doorkeeper и OAuth2 для одного из моих приложений Rails. Моя цель — разрешить API-доступ пользователю в зависимости от его access_token, чтобы только пользователь мог видеть свой json «user_show». На данный момент мои приложения для разработки и производства настроены и авторизованы на маршруте «oauth2/applications».

Мой '/config/initializers/doorkeeper.rb'

Doorkeeper.configure do
  # Change the ORM that doorkeeper will use.
  # Currently supported options are :active_record, :mongoid2, :mongoid3,
  # :mongoid4, :mongo_mapper
  orm :active_record

  # This block will be called to check whether the resource owner is authenticated or not.
  resource_owner_authenticator do
  # Put your resource owner authentication logic here.
  # Example implementation:
    User.find_by_id(session[:current_user_id]) || redirect_to('/')
  end
end

и мой '/api/v1/user/controller.rb' выглядит так:

class Api::V1::UserController < Api::ApiController
  include ActionController::MimeResponds
  before_action :doorkeeper_authorize!
  def index
    user = User.find(doorkeeper_token.resource_owner_id)
    respond_with User.all
  end
  def show
    user = User.find(doorkeeper_token.resource_owner_id)
    respond_with user
  end
end

Я попытался получить доступ к таблице приложений OAuth, чтобы увидеть, что создается, но я не могу получить к ней доступ в консоли rails.

Заранее спасибо за понимание!


person Christina Leuci    schedule 22.01.2015    source источник


Ответы (1)


Кажется, привратник не находит токена.

Убедитесь, что вы отправляете его либо с URL-адреса с ?access_token=#{token}, либо с ?bearer_token=#{token}, либо указывая этот токен в заголовках, используя авторизацию носителя.

Вы также должны иметь в виду, что токен может быть связан только с приложением без владельца ресурса. Таким образом, значение resource_owner_id может быть равно nil даже с допустимым токеном. Это зависит от того, какой поток предоставления вы используете (поток учетных данных клиента не связан с владельцем ресурса). См. https://github.com/doorkeeper-gem/doorkeeper/wiki#flows

Для таблиц OAuth попробуйте использовать Doorkeeper::AccessToken.all в консоли rails.

Надеюсь, это помогло

person kevcha    schedule 11.02.2015