Переписать curl как HTTP-запрос POST для получения токена доступа - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь получить токен доступа с помощью почтового запроса в rails. Я могу написать этот запрос как 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'

Мой метод ruby, выдающий ошибку 400, выглядит следующим образом:

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

Любой совет будет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Вам лучше использовать Почтальон, который можно скачать здесь https://www.getpostman.com/pricing

Только после того, как вы надлежащим образом подтвердили API с помощью Postman, вам лучше использовать rest-client, faraday или какой-нибудь аккуратный api-клиент.

0 голосов
/ 15 марта 2019

Я не уверен, в чем здесь проблема, но что я делаю в таких случаях:

1) найти фиктивный веб-сайт, который вы можете использовать для запроса на тестирование (или создайте requestbin *)1004 *)

2) отправьте запрос с curl на ваш сайт и сохраните информацию о нем

3) отправьте запрос, используя ваш код на ваш сайт

4) сравнитьрезультаты

Надеюсь, это поможет.

...