Ruby on rails 法拉第授权头
我正试图向Ruby on rails 法拉第授权头,ruby-on-rails,ruby,curl,faraday,Ruby On Rails,Ruby,Curl,Faraday,我正试图向SpingoAPI发出请求。我已经使用Curl成功地提出了一个请求,但是我正在尝试使用法拉第宝石 成功的curl请求如下所示: curl -v --url "calendarapi.spingo.com/v1/events?sections=42336" --header 'Authorization: SpingoAPI token="my-api-key"' def make_request conn = Faraday.new(base_url) do |f|
Spingo
API发出请求。我已经使用Curl成功地提出了一个请求,但是我正在尝试使用法拉第宝石
成功的curl请求如下所示:
curl -v --url "calendarapi.spingo.com/v1/events?sections=42336" --header 'Authorization: SpingoAPI token="my-api-key"'
def make_request
conn = Faraday.new(base_url) do |f|
f.params['sections'] = '42336'
f.adapter :typhoeus
f.use Faraday::Response::Logger
end
conn.authorization(:SpingoAPI, token: api_key)
conn.get
end
最初我尝试使用默认适配器nethttp
。然后我切换到Typheous
适配器,因为nethttp
在授权头中将我的SpingoAPI
方案资本化。这使它读起来像是斯宾戈皮。现在,我的请求如下所示:
curl -v --url "calendarapi.spingo.com/v1/events?sections=42336" --header 'Authorization: SpingoAPI token="my-api-key"'
def make_request
conn = Faraday.new(base_url) do |f|
f.params['sections'] = '42336'
f.adapter :typhoeus
f.use Faraday::Response::Logger
end
conn.authorization(:SpingoAPI, token: api_key)
conn.get
end
切换到Typheous
允许返回某些内容(我没有从nethttp
获得任何内容),因此我的响应如下所示
ETHON: performed EASY effective_url=url
sections=42336 response_code=200 return_code=ok total_time=0.844381
I, [2015-08-05T11:16:06.575611 #22692] INFO -- : get http://www.calendarapi.spingo.com/v1/events?sections=42336
D, [2015-08-05T11:16:06.575842 #22692] DEBUG -- request: User-Agent: "Faraday v0.9.1"
Authorization: "SpingoAPI token=\"my-token\""
I, [2015-08-05T11:16:06.576081 #22692] INFO -- Status: 200
D, [2015-08-05T11:16:06.576230 #22692] DEBUG -- response: Content-Type: "text/html; charset=utf-8"
Date: "Wed, 05 Aug 2015 17:16:03 GMT"
Server: "nginx/1.2.9"
Set-Cookie: "VisitorID=GsPJ8NLBiP; expires=Tue, 03-Nov-2015 17:16:03 GMT"
X-Powered-By: "PHP/5.3.10-1ubuntu3.11"
Content-Length: "152"
Connection: "keep-alive"
这让我相信我没有被授权,但是我不知道如何以不同的方式通过授权
任何帮助都将不胜感激 试试这个:
# set variables
base_url = "calendarapi.spingo.com"
url = "/v1/events"
token = "SpingoAPI token='my-api-key'"
params = {:sections => 42336}
# init connection object
connection = Faraday.new(:url => base_url) do |c|
c.use Faraday::Request::UrlEncoded
c.use Faraday::Response::Logger
c.use Faraday::Adapter::NetHttp
end
# send request
response = connection.get url, params do |request|
request.headers["Authorization"] = token
end
这个回答很傻,但让它起作用的是将www从我的基本url中移除。显然,域名没有设置为接受它,不管有没有。