¿Las solicitudes de OAuth a la nube de Ubuntu One devuelven una respuesta vacía?

¿Las solicitudes de OAuth a la nube de Ubuntu One devuelven una respuesta vacía?

Actualmente estoy desarrollando una aplicación ubuntuone Bada. Puedo obtener los tokens a través de la API, pero si intento solicitar cualquier otra parte de la API, aparece una ventana del navegador vacía o no se activa ningún evento en el detector http de la aplicación.

La URL de mi solicitud se ve así:

https://one.ubuntu.com/api/file_storage/v1?oauth_consumer_key=abc&oauth_token=def&oauth_nonce=xdobeqcqyfjnzjsh&oauth_timestamp=1328656660424&oauth_signature_method=PLAINTEXT&oauth_version=1.0&oauth_signature=uvw%26xyz

Encontré los parámetros en varios sitios y no estoy seguro si son válidos.

¡¡Gracias por tu ayuda!!

Respuesta1

Debes utilizar los detalles del token que debesfirma la solicitudcon el protocolo OAuth.

Aquí hay un script de Python de ejemplo, que se ejecutará en Ubuntu, que firmará una URL y luego imprimirá esa URL; Si luego solicita esa URL, debería funcionar.

Avíseme si esto sigue siendo problemático. (Nota: la API devuelve datos como tipo de contenido application/json, por lo que es posible que no se carguen en un navegador móvil).

import oauth, urlparse, sys
from ubuntuone.couch.auth import *
if __name__ == "__main__":
  # If you already have token details, then use them here; you'll need
  # access_token, token_secret, consumer_key, and consumer_secret. This
  # script fetches them from a running Ubuntu instead.
  try:
      credentials = get_oauth_credentials()
  except CredentialsNotFound:
      print "COULDN'T GET CREDENTIALS"
      sys.exit()
  access_token = credentials['token']
  token_secret = credentials['token_secret']
  consumer_key = credentials['consumer_key']
  consumer_secret = credentials['consumer_secret']

  # Now we have token details; let's use them to sign a request.

  token = get_oauth_token(access_token, token_secret)
  consumer = oauth.OAuthConsumer(consumer_key, consumer_secret)

  url = "https://one.ubuntu.com/api/file_storage/v1"
  request_body = ""
  signature_method = HMAC_SHA1

  parameters = {}
  query = urlparse.urlparse(url)[4]
  for key, value in urlparse.parse_qs(query).items():
      parameters[key] = value[0]

  request_len = len(request_body) if request_body else 0
  timeout = 10 * (request_len / 1024 / 1024 + 1)  # 10 seconds per megabyte

  oauth_request = oauth.OAuthRequest.from_consumer_and_token(
      http_url=url,
      http_method="GET",
      oauth_consumer=consumer,
      token=token,
      parameters=parameters)
  oauth_request.sign_request(signature_method, consumer, token)
  print oauth_request.to_url()

información relacionada