[英]curl to Ruby request for connecting to wheniwork
背景故事
我花了几天的时间在Ruby gem上工作 ,这真是一场噩梦。 长话短说,gem依赖于旧版本的activesupport,我基本上分叉了他们的仓库,并为我的ruby项目制作了兼容版本。 我能够创建一个新的gem并尝试使用它,但是却收到以下json消息:
{"error"=>"User login required for this resource.", "code"=>1000}
用户名,密码和api密钥已设置。 我基本上需要做的是访问我们的帐户,并检索数据。
这是使用curl命令的示例
curl https://api.wheniwork.com/2/login \
--data '{"username":"user@example.com","password":"*******"}' \
-H "W-Key: iworksoharditsnotfunny"
从本质上讲,我会从wheniwork中获取某种包含令牌的返回对象。 我会将此标记用于以后向wheniwork网站的请求。
至(Ruby)
将其转换为Ruby的新尝试
require 'net/http'
data = {'credentials' => {'username' => 'XXXXX@XXXXX.com','password' => 'XXXXX', 'W-Key' => '111111111XXXXX'}}
uri = URI.parse("https://api.wheniwork.com/2/login/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'})
request.add_field('Content-Type', 'application/json')
request.body = data.to_json
response = http.request(request)
结果:
#<Net::HTTPUnauthorized 401 Unauthorized readbody=true>
如果您有任何想法或线索(或基本上有什么可以帮助我的想法),我将不胜感激。 谢谢!
得到它了!! 主要问题是api密钥和(用户名和密码)组合是两个单独的部分。
我一直都这么近,但是在这里:
data = {'username' => 'XXXX@XXXXXXX.com','password' => 'XXXXX'}
uri = URI.parse("https://api.wheniwork.com/2/login/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.path)
request.add_field('W-Key', 'XXXXXXXXXXXXX')
request.body = data.to_json
response = http.request(request)
puts JSON.parse(response.body)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.