A API de Operações do cloud4mobile está disponível para uso por parceiros. Você poderá encontrar vários artigos aqui para guiar o uso correto da API.
Autenticação:
Para utilizar a API de Operações do cloud4mobile, primeiramente é necessário entender como funciona a autenticação. O processo de autenticação é na verdade uma assinatura de todas as mensagens trocadas com o servidor do cloud4mobile. Por isso é necessário o cálculo da autenticação a cada request feito para a API.
Em todas as chamadas realizadas para API é necessário acrescentar o HTTP header de autenticação como abaixo:
Autentication: Bearer token_base_64
Detalhes do token
O Bearer token referenciado no parágrafo anterior é formado pelos seguintes campos:
{
“consumer_key”:”valor_chave”,
“nonce”:”valor_nonce”,
“timestamp”:unix_time,
“version”:”1.0″,
“signature”:”valor_assinatura”
}
Sobre os campos acima:
- valor_chave: é o valor do Consumer Key do consumidor da API de Operações. Por exemplo este valor pode ser obtido no Portal de Administração da conta criada (na seção WebAPI Access Token).
- valor_nonce: é um valor único por request. Sempre que um request for feito a API de Operações esse campo deve ser atualizado com um novo valor único. Este campo evita que alguém que esteja interceptando as chamadas possa reutilizar a mensagem sem modificá-la (http://en.wikipedia.org/wiki/Eavesdropping). Sobre nonces: http://en.wikipedia.org/wiki/Cryptographic_nonce.
- unix_time: é o timestamp do request. É a data/hora atual calculada em Unix Time. Este valor impede que usuários utilizem uma mensagem capturada no passado e tentem utilizá-la na API de Operações. O servidor tem uma tolerância de 2hs (para mais e para menos).
- valor_assinatura: é o resultado em representação Base64 do seguinte cálculo: HMACSHA256(valor_secret + valor_chave + valor_nonce + valor_timestamp + “1.0” + verbo_http + url_requisicao). Vale observar aqui que valor_secret deve ser usado como chave do HMACSHA256 para gerar a assinatura.
Alguns campos novos apareceram no cálculo da assinatura, detalhando:
- valor_secret: este valor é Consumer Secret obtido juntamente com seu par Consumer Key. O Consumer Secret não deve ser compartilhado.
- verbo_http: é o verbo utilizado na requisição (GET, POST, PUT, DELETE). Para evitar que pessoas mal intencionadas troquem apenas o verbo da requisição, transformando um PUT em DELETE, por exemplo. Este campo deve ser escrito em letras maiúsculas.
- url_requisicao: é a URL completa de acesso ao recurso, exemplo: https://api.cloud4mobile.com.br/devices?status=1. Isto evita que pessoas mal intencionadas interceptem e modifiquem o request antes que este chegue até o servidor. Este campo deve ser escrito em letras maiúsculas
Exemplos de código de geração do Bearer token:
Documentação da API
Veja mais em Documentação da API (swagger).