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

0 ответов

Другие вопросы по тегам