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