Solicitações OAuth para a nuvem Ubuntu One retornam uma resposta vazia?

Solicitações OAuth para a nuvem Ubuntu One retornam uma resposta vazia?

Atualmente estou desenvolvendo um aplicativo Ubuntu Bada. Posso obter os tokens por meio da API, mas se tentar solicitar qualquer outra parte da API, recebo apenas uma janela vazia do navegador ou nenhum evento disparado no ouvinte http do aplicativo.

Meu URL de solicitação é assim:

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

Encontrei os parâmetros em vários sites e não tenho certeza se são válidos.

Obrigado pela ajuda!!

Responder1

Você precisa usar os detalhes do token necessários paraassine o pedidocom o protocolo OAuth.

Aqui está um exemplo de script Python, para ser executado no Ubuntu, que assinará uma URL e depois imprimirá essa URL; se você solicitar esse URL, ele deverá funcionar.

Deixe-me saber se isso ainda é problemático. (Observação: a API retorna dados como content-type application/json, portanto, isso não pode ser carregado em um navegador móvel.)

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()

informação relacionada