我正在尝试通过在rails中使用post请求来获取访问令牌。我可以将此请求作为curl编写,成功地检索了令牌,但当我尝试将其转换为rails时,我得到了一个400错误。
卷曲效果如下所示。
curl -v -X POST --url https://subdomain.okta.com/oauth2/v1/token --header 'accept: application/json' --header 'content-type: application/x-www-form-urlencoded' --data 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Fexample.com%2Foauth%2Fobfuscated%2Fcallback1&code=HxYy0kiN-eG1GuZ3LaYA&client_id=somecode&client_secret=anothercode'
我的生成400错误的ruby方法如下:
theURLToGetToken = "https://subdomain.okta.com/oauth2/v1/token";
puts "URL for Token Validation"
puts theURLToGetToken
params = {
'client_id' => AUTH['OKTA_CLIENT_ID'],
'client_secret' => AUTH['OKTA_CLIENT_SECRET'],
'code' => theCode,
"grant_type" => "authorization_code",
'redirect_uri' => "https://example.com/oath/obfuscated/callback1"
}
uri = URI.parse(theURLToGetToken)
request = Net::HTTP::Post.new(uri.path)
request["content_type"] = "application/x-www-form-urlencoded"
request["Accept"] = "application/json"
request.set_form_data(params)
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
puts "Here's the response"
pp response
任何建议都将不胜感激。
发布于 2019-03-15 07:10:07
我不确定这里的问题是什么,但我在这种情况下所做的是:
1)找到可用于测试请求的虚拟网站(或创建requestbin)
2)将带有curl的请求发送到您的网站并保存相关信息
3)使用您的代码将请求发送到您的网站
4)比较结果
希望能有所帮助。
发布于 2019-03-15 08:20:11
你最好使用邮递员,可以从这里下载https://www.getpostman.com/pricing
只有在你与Postman正确确认了api之后,你最好使用rest-client、faraday或一些整洁的api客户端。
https://stackoverflow.com/questions/55176942
复制