gpt4 book ai didi

ruby-on-rails - 使用 Doorkeeper 使用客户端凭据在 OAuth 中发布

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:08 26 4
gpt4 key购买 nike

我已经实现了一个 REST API 并使用门卫保护它。我编写了一个小型客户端程序来访问它,并且使用资源所有者凭据流可以正常工作。

现在我正在尝试使用客户端凭据实现调用 flow .所以我遵循了链接中的示例。

当我使用 GET 请求时一切正常,但是当我使用 POST 请求时,我收到了 401 Unauthorized。这是对不需要资源所有者的方法的调用。

我的 API Controller 中唯一相关的是:

doorkeeper_for :all

我没有实现任何范围或没有实现任何此类措施(我必须实现吗?)。

我的客户端代码如下所示(与 example in github 中的完全一样):

require 'rest-client'
require 'json'

client_id = 'my_client_id...'
client_secret = 'my_client_secret...'

response = RestClient.post 'http://localhost:3000/oauth/token', {
grant_type: 'client_credentials',
client_id: client_id,
client_secret: client_secret
}
token = JSON.parse(response)["access_token"]

# this line works great:
RestClient.get 'http://localhost:3000/api/v1/flights.json', { 'Authorization' => "Bearer #{token}" }
# this line always fails (401 Unauthorized):
RestClient.post 'http://localhost:3000/api/v1/flights.json', { 'Authorization' => "Bearer #{token}" }

知道我可能做错了什么吗?为了启用客户端凭据流,我应该在我的应用程序中做些什么特别的事情吗?

最佳答案

我想通了。问题是我没有正确使用 RestClient.post。第二个参数应该是有效负载,第三个应该是 header 。它应该是这样的:

RestClient.post 'http://localhost:3000/api/v1/flights.json', {}, { 'Authorization' => "Bearer #{token}" }

关于ruby-on-rails - 使用 Doorkeeper 使用客户端凭据在 OAuth 中发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724912/

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