RestClient/HTTParty 未使用身份验证参数
RestClient/HTTParty authentication parameters not being used
对于 API 我试过的电话..
在 RestClient 中
有效但错误:
response = RestClient::Request.execute(
method: :get,
url: 'https://api.data.charitynavigator.org/v2/Organizations?app_id=2b1ffdad&app_key=XXXX',
)
不起作用(403:禁止访问):
response = ::RestClient::Request.execute(method: :get, url: 'https://api.data.charitynavigator.org/v2/Organizations?app_id=2b1ffdad',
headers: {app_key: 'XXXX'})
在 HTTParty
也不起作用(缺少身份验证参数):
require 'rubygems'
require 'httparty'
class Charity
include HTTParty
base_uri 'https://api.data.charitynavigator.org/v2/'
def posts
headers = {
"app_id" => "2b1ffdad",
"app_key" => "XXXX"
}
self.class.get("/Organizations/",
:headers => headers
)
end
end
charity = Charity.new
puts charity.posts
供参考:https://charity.3scale.net/docs/data-api/reference
是语法吗?我也调查了 Faraday,但 运行 调查了类似的问题。许多带有 rails 的第 3 方 API 示例似乎使用了早已过时的 API,因此很难将所有内容拼凑在一起。
如有任何见解,我们将不胜感激。好想明白这个。
我无法理解你的说法有效但错误但是慈善导航数据API请求发送app_id
和app_key
键通过参数,不是header。
您的第一个代码看起来是正确的。
第二个代码,app_key
密钥是由 header 发送的,而不是参数。所以 API 响应 403.
第三个代码,用httpart编码gem,不使用参数而是headers。所以 Charity Navigator Data API 响应 Authentication parameters missing
错误。很正常。
require 'httparty'
class StackExchange
include HTTParty
base_uri 'https://api.data.charitynavigator.org/v2/'
def posts
options = {
query: {
app_id: '2b1ffdad',
app_key: 'XXXX'
}
}
self.class.get("/Organizations/", options)
end
end
charity = Charity.new
puts charity.posts
但是你可以在httparty中通过query option
使用参数。也阅读 rest-client gem 中的 httparty docs and this SO. And you can use parameters options。而且强烈推荐使用。
对于 API 我试过的电话..
在 RestClient 中
有效但错误:
response = RestClient::Request.execute(
method: :get,
url: 'https://api.data.charitynavigator.org/v2/Organizations?app_id=2b1ffdad&app_key=XXXX',
)
不起作用(403:禁止访问):
response = ::RestClient::Request.execute(method: :get, url: 'https://api.data.charitynavigator.org/v2/Organizations?app_id=2b1ffdad',
headers: {app_key: 'XXXX'})
在 HTTParty
也不起作用(缺少身份验证参数):
require 'rubygems'
require 'httparty'
class Charity
include HTTParty
base_uri 'https://api.data.charitynavigator.org/v2/'
def posts
headers = {
"app_id" => "2b1ffdad",
"app_key" => "XXXX"
}
self.class.get("/Organizations/",
:headers => headers
)
end
end
charity = Charity.new
puts charity.posts
供参考:https://charity.3scale.net/docs/data-api/reference
是语法吗?我也调查了 Faraday,但 运行 调查了类似的问题。许多带有 rails 的第 3 方 API 示例似乎使用了早已过时的 API,因此很难将所有内容拼凑在一起。
如有任何见解,我们将不胜感激。好想明白这个。
我无法理解你的说法有效但错误但是慈善导航数据API请求发送app_id
和app_key
键通过参数,不是header。
您的第一个代码看起来是正确的。
第二个代码,app_key
密钥是由 header 发送的,而不是参数。所以 API 响应 403.
第三个代码,用httpart编码gem,不使用参数而是headers。所以 Charity Navigator Data API 响应 Authentication parameters missing
错误。很正常。
require 'httparty'
class StackExchange
include HTTParty
base_uri 'https://api.data.charitynavigator.org/v2/'
def posts
options = {
query: {
app_id: '2b1ffdad',
app_key: 'XXXX'
}
}
self.class.get("/Organizations/", options)
end
end
charity = Charity.new
puts charity.posts
但是你可以在httparty中通过query option
使用参数。也阅读 rest-client gem 中的 httparty docs and this SO. And you can use parameters options。而且强烈推荐使用。