3

我正在为我的一个 Rails 应用程序设置DoorkeeperOAuth2。我的目标是根据用户的 access_token 允许 api 访问用户,这样只有用户才能看到他们的 '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 控制台中访问它。

提前感谢您的洞察力!

4

1 回答 1

6

Doorkeeper 似乎没有找到任何令牌。

确保您从带有?access_token=#{token}或的 url 发送它,或者?bearer_token=#{token}使用 Bearer Authorization 在标头中提供此令牌。

您还需要记住,令牌只能与应用程序相关联,而没有资源所有者。所以resource_owner_id价值nil甚至可以是一个有效的令牌。这取决于您使用的授权流(客户端凭据流与资源所有者无关)。见https://github.com/doorkeeper-gem/doorkeeper/wiki#flows

对于 OAuth 表,请Doorkeeper::AccessToken.all在 rails 控制台中尝试。

希望这有帮助

于 2015-02-11T13:32:54.510 回答