Ruby-Invalid Signature Ошибка при попытке получить с помощью модуля, который генерирует "oauth signature"
Привет, я пытался получить oAuth "request_token", чтобы использовать Nokia Health API. https://developer.health.nokia.com/api Поскольку он не предоставляет клиентскую библиотеку для Ruby, мне пришлось написать шаги аутентификации кода. Поэтому я также попытался использовать этот фрагмент кода ( https://gist.github.com/cheenu/1469815/d2a6c2a2adb7ed7e31179a8259273f115eb62784), который подходит для моего проекта. Но не повезло!
Всякий раз, когда я отправляю запрос с помощью GET, он всегда отправляет ответ: "Недопустимая подпись" {"status":0,"message":"Недопустимая подпись....
Есть ли правильный способ создания подписи OAuth с использованием Ruby? Любая помощь будет оценена! С Уважением,
Здесь я прилагаю текущий исходный код, который генерирует недопустимую подпись OAuth.
require "cgi"
require 'openssl'
require 'base64'
# Consumer key, provided by Nokia when registering as a partner.
oauth_consumer_key = ENV['nokia_api_key']
# Callback, url encoded.
# This callback will be called after the user has authorized your account
# to access his data (on step 2).
# User id for the user is provided as "userid=" url parameters to the callback.
oauth_callback = 'https://iaura.herokuapp.com/get_auth_token'
# Random string (should be different for every request).
oauth_nonce = rand(10 ** 30).to_s.rjust(30,'0')
# OAuth signature method. Should always be equal to HMAC-SHA1
oauth_signature_method = 'HMAC-SHA1'
# Current date as unix epoch
oauth_timestamp = Time.now.to_i.to_s
# oAuth version. Should always be equal to 1.0
oauth_version = '1.0'
url = 'https://developer.health.nokia.com/account/request_token'
parameters = 'oauth_callback=' + oauth_callback +
'&oauth_consumer_key=' + oauth_consumer_key +
'&oauth_nonce=' + oauth_nonce +
'&oauth_signature_method=' + oauth_signature_method +
'&oauth_timestamp=' + oauth_timestamp +
'&oauth_version=' + oauth_version
base_string = 'GET&' + CGI.escape(url) + '&' + CGI.escape(parameters)
secret_key = ENV['nokia_api_secret'] + '&' # Add & at the end of secret_key
oauth_signature = CGI.escape(Base64.encode64("#{OpenSSL::HMAC.digest('sha1',secret_key, base_string)}"))
request_url = url + '?' + parameters + '&oauth_signature=' + oauth_signature