Carriles - Firmar peticiones OAuth1

votos
1

Actualmente estoy tratando de implementar un API ( http://developers.music-story.com ) cuya autenticación se utiliza la tecnología de OAuth 1.0 (solicitudes también están firmados). Cuando creé mi cuenta de dev me proporcionaron 4 llaves diferentes, tales como:

oauth_consummer_key = some_hexa_str_long_of_40_chars
consummer_secret = some_other_hexa_str_long_of_40_chars
oauth_access_token = some_other_hexa_str_long_of_40_chars
oauth_token_secret = some_other_hexa_str_long_of_40_chars

Hasta ahora, he estado tratando de firmar la solicitud de forma manual utilizando un código encontrado aquí y allí sin éxito. Mi entendimiento es que la firma tiene que ser una especie de huella digital de la solicitud en sí, pero no estoy seguro de ello conceptualmente y mucho menos cómo hacer que suceda técnicamente.

Pregunta: ¿Cuál sería mi OAuth 1 Firma si mi solicitud es algo así como (?):

HTTParty.get(http://api.music-story.com/en/show/search?
oauth_signature=I_DONT_KNOW_HOW_TO_GET_THIS
&oauth_token=I_HAVE_THIS_ONE_ALREADY
&name=whatever)

Edit1: Aquí es lo que he tratado hasta ahora y respuesta de la API aumentos (mensaje clave oauth no válido):

oauth_consumer_key = oauth_consummer_key
oauth_nonce = Random.rand(100000).to_s
oauth_signature_method = 'HMAC-SHA1'
oauth_timestamp = Time.now.to_i.to_s
oauth_version = '1.0'

url = http://api.music-story.com/en/artist/search?

parameters = '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) + '&name=whatever'
secret_key = oauth_token_secret
oauth_signature = CGI.escape(Base64.encode64(#{OpenSSL::HMAC.digest('sha1',secret_key, base_string)}).chomp)

oauth_token = oauth_access_token

response = HTTParty.get(http://api.music-story.com/en/artist/search?name=someartistname&oauth_signature=#{oauth_signature}&oauth_token=#{oauth_token})
puts JSON.parse(response.to_json)
# {root=>{version=>1.29, code=>-3, error=>{type=>OAuthException, message=>Incorrect oauth_signature, errorcode=>40107}}}

Edit2 que también trató de añadir '&' al final oauth_tokeny soluciones de este post sin éxito.

¡Por favor iluminame!

Publicado el 20/10/2018 a las 10:36
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

En mi caso, el problema estaba teniendo http://en el inicio del esquema de URL. Sustitución del parámetro url de la consulta con algo así como api.music-story.com...trabajado para mí

Respondida el 20/10/2018 a las 14:53
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more