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

1

Atualmente, estou desenvolvendo um aplicativo ubuntuone Bada. Eu posso obter os tokens através da API, mas se eu tentar solicitar qualquer outra parte da API eu recebo uma janela do navegador vazia ou nenhum evento disparado no ouvinte http do aplicativo.

O URL da minha 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

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

Obrigado pela sua ajuda !!

    
por dieterm57 08.02.2012 / 00:26

1 resposta

2

Você precisa usar os detalhes do token que você precisa para assinar a solicitação com o protocolo OAuth.

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

Deixe-me saber se isso ainda é problemático. (Observação: a API retorna dados como tipo de conteúdo application/json , portanto, isso pode não 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()
    
por sil 08.02.2012 / 10:01