Como usar a autenticação de oruloEndUserAuth da API da Órulo
3 min
Criado por Rodrigo Lima Jaroszewski em 02/02/2023 14:10
Atualizado por Edward Dias em 21/01/2025 14:37
O script de Python abaixo implementa os passos necessários para se conectar à API da Órulo usando o grant type de authorization code, conforme o padrão OAuth2:

  1. Redireciona o usuário para a URL de autorização, onde eles darão permissão para que a aplicação acesse sua conta.
  2. Espera o usuário entrar o código de autorização  que é retornado como um parâmetro da query da URI redirecionada (no exemplo, usamos a URI de localhost do OAuth2, mas você pode automatizar o processo e eliminar o trabalho do usuário com uma URI customizada).
  3. Faz uma request para o endpoint de token para trocar um código de autorização por um token de acesso.
  4. Usa o token de acesso para fazer uma request de API autenticada.

import requests

client_id = 'your_client_id'
client_secret = 'your_client_secret'
redirect_uri = 'urn:ietf:wg:oauth:2.0:oob' # padrão, criar depois

# Passo 1: Obter o código de autorização

# Redirecionar o usuário para a URL de autorização
authorization_url = f'https://www.orulo.com.br/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code'
print(f'Go to the following URL in your browser: {authorization_url}')

# Esperar que o usuário escreva o código de autorização
authorization_code = input('Enter the authorization code: ')

# Passo 2: Pegar o token de acesso

# Fazer uma request ao endpoint de geração de token para trocar
# um código de autorização por um token de acesso
token_url = 'https://www.orulo.com.br/oauth/token'

response = requests.post(token_url, data={
'grant_type': 'authorization_code',
'code': authorization_code,
'redirect_uri': redirect_uri,
'client_id': client_id,
'client_secret': client_secret,
})

# Verifica se houve sucesso na request
if response.status_code != 200:
raise Exception('Erro ao tentar gerar o token')

# Extrai o token de acesso do request
access_token = response.json()['access_token']

# Passo 3: Usa o token de acesso para fazer pedidos de API autenticados

# Faz uma request autenticada para a API usando o token de acesso
# Neste exemplo, retorna todos os buildings ativos que o token tem acesso
api_url = 'https://www.orulo.com.br/api/v2/buildings/ids/active'

response = requests.get(api_url, headers={
'Authorization': f'Bearer {access_token}',
})

# Verifica se houve sucesso na request
if response.status_code != 200:
raise Exception('Failed to make API request')

# Extrai a lista de buildings da resposta
active_buildings = response.json()

# Print the user data
print(active_buildings)