gpt4 book ai didi

ruby-on-rails - 未定义方法 `resource_owner_id' 为 nil :NilClass Doorkeeper

转载 作者:行者123 更新时间:2023-12-01 10:44:10 28 4
gpt4 key购买 nike

我正在设置 DoorkeeperOAuth2对于我的一个 Rails 应用程序。我的目标是根据用户的 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 Applications 表以查看正在创建的内容,但我无法在 Rails 控制台中访问它。

提前感谢您的见解!

最佳答案

Doorkeeper 似乎没有找到任何 token 。

确保您正在发送它,无论是从带有 ?access_token=#{token} 的 url 还是 ?bearer_token=#{token},要么将此 token 提供给使用 Bearer Authorization 的 header 。

您还需要记住, token 只能关联到一个应用程序,而没有资源所有者。因此,即使使用有效 token ,resource_owner_id 值也可能为 nil。这取决于您使用的授权流程(客户端凭证流程与资源所有者无关)。参见 https://github.com/doorkeeper-gem/doorkeeper/wiki#flows

对于 OAuth 表,尝试在 Rails 控制台中使用 Doorkeeper::AccessToken.all

希望对您有所帮助

关于ruby-on-rails - 未定义方法 `resource_owner_id' 为 nil :NilClass Doorkeeper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28097174/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com