Недефиниран метод `resource_owner_id' за nil:NilClass Doorkeeper

В процес съм на настройване на Doorkeeper и OAuth2 за едно от моите Rails приложения. Моята цел е да разреша достъп на api до потребител в зависимост от техния access_token, така че само потребител да може да види своя 'user_show' json. Досега моите приложения за разработка и производство са настроени и разрешени по маршрута „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)


Изглежда, че Doorkeeper не намира никакъв жетон.

Уверете се, че го изпращате или от url с ?access_token=#{token} или ?bearer_token=#{token}, или давате този токен в заглавки, използвайки Bearer Authorization.

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

За OAuth таблиците опитайте с Doorkeeper::AccessToken.all в rails конзола.

Надявам се това да е помогнало

person kevcha    schedule 11.02.2015